【问题标题】:Angular UpgradeComponent with name binding具有名称绑定的 Angular UpgradeComponent
【发布时间】:2018-10-26 23:00:09
【问题描述】:

我在 Angular 5 中使用 UpgradeComponent 来使用 AngularJS 组件。AngularJS 组件有一个名为“name”的绑定,它与 UpgradeComponent 上的私有变量冲突。

有没有简单的方法解决这个问题?

【问题讨论】:

    标签: angular-components angular-upgrade


    【解决方案1】:

    不幸的是,似乎没有简单的解决方案。

    Typescript 阻止您访问父类的私有属性。解决这个问题会破坏将变量设置为私有的目的。如果您将子类的名称属性也更改为私有,则警告将更改为“类型具有属性“名称”的单独声明”。他们正在阻止这种情况发生,因为在编译的代码中,您总是首先获得在子类上声明的属性 - 如果您在子类中提供自己的值,您将无法访问如果您将拥有的值你实例化了基类。

    在这种特殊情况下,UpgradeComponent 使用 'name' 属性来存储您传递给构造函数中的 super() 调用的选择器名称。事后用您自己的本地属性覆盖它可能会导致不良行为。因此,为了防止这种情况发生,Angular 团队将该变量标记为私有,因此您无法覆盖它。

    这是一个 Typescript Playground,用于查看编译代码中实际发生的情况:Playground

    在这种情况下,我认为最好的办法是在 Angular 1.x 组件上创建一个新属性,您可以将其用作您无法覆盖的 name 属性的别名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多