1

我有一个降级的 Angular 2 组件,它在 AngularJS 组件中运行良好,直到我删除了组件第二个属性周围的单引号。

编辑:这个组件使用的文件类型是 ng.jade 。

这有效:

user-score-component(
  [rating-score]="user.ratingScore"
  '[form-is-disabled]'="false"
  '(on-change)'="onRatingScoreChange($event)"
)

这不会:

user-score-component(
  [rating-score]="user.ratingScore"
  [form-is-disabled]="false"
  '(on-change)'="onRatingScoreChange($event)"
)

在第二个示例中,false 应用于rating-score并且form-is-disabled未定义。我很好地将单引号留在周围,form-is-disabled但是在对混合应用程序进行了一些研究之后,我无法弄清楚单引号在这里做了什么。

为什么第二个属性 ( ) 需要它们,form-is-disabled而不是第一个 ( rating-score)?

4

1 回答 1

0

在 Pug 的问题跟踪器中的 github 上提到了这一点:https ://github.com/pugjs/pug/issues/2050

这是一个很难解决的案例。例如:

input(foo='foo' [bar]='bar') //- since 'foo' [bar] is equivalent to
'foo'[bar] input(foo='foo'[bar]='bar') //- which is equivalent to
input(foo=('foo'[bar]='bar')) //- which is equivalent to
input(foo='bar')

input([foo]='foo' (bar)='bar') input(foo='foo'(bar)='bar')
input(foo=('foo'(bar)='bar')) //- 'foo'(bar)='bar → assigning to
rvalue ?

您可以使用的解决方法是引用属性名称:

input('[foo]'='foo' '[bar]'='bar') input('[foo]'='foo' '(bar)'='bar')

由于该错误无法修复并且存在合理的解决方法,因此我现在将关闭此问题。

于 2019-06-20T17:20:58.633 回答