【问题标题】:Can you declare order of Attribute directives in Angular 2你能在Angular 2中声明属性指令的顺序吗
【发布时间】:2017-02-22 15:39:26
【问题描述】:

我有following simple pluner,我正在尝试使用属性指令在我的应用程序中添加(或覆盖)不同的选项。我看到的问题是这些指令的初始化顺序与 DOM 元素中指令的顺序不匹配。

所以即使我按顺序声明它们......

<div jgMoreOptions jgOptions [options]="options">

他们似乎采取了此处应用程序声明中声明的顺序...

@NgModule({
  imports: [ BrowserModule ],
  declarations: [ 
    App,
    OptionsDirective,
    MoreOptionsDirective,
  ],
  bootstrap: [ App ]
})

如果我有多个实现希望以不同的顺序加载指令,这是一个问题。

有没有办法在标签本身中声明指令的顺序?

Here is an example with both directives in a diff order

【问题讨论】:

    标签: angular angular2-directives


    【解决方案1】:

    订单明确未定义

    您需要以某种方式编写代码,以便顺序无关紧要。

    【讨论】:

    • 这不适用于我的示例,因为选项会覆盖其他选项。无论如何要写一个包装器或以某种方式更明确?在以前的 Angular 版本中,我们使用的是 eval 表达式,我想避免这种情况。
    • 对于您的用例来说,管道可能是更好的选择,例如 [options]="options | jgMoreOptions | jgOptiosn"
    • 不确定我是否遵循 sn-p 是否有机会获得示例 plunker?我添加了第二个 plunker,以便更清楚地了解我在寻找什么,如果您需要我扩展它,请告诉我。
    • 管道仅用于操作值。 @HostBinding('style.background-color') 无法使用管道实现。
    • 管道只是一个函数,它接受一个输入值(参数)并返回一个输出值(return xxx;)。然后将管道返回的内容传递给[options]
    猜你喜欢
    • 2016-05-18
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 2011-03-28
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    相关资源
    最近更新 更多