【发布时间】:2017-01-05 17:18:39
【问题描述】:
基本上我正在寻找一种方法来实现 Angular 1.x ngInit 指令的对应项。
我知道ngOnInit 钩子以及它是初始化代码的推荐位置这一事实。我认为ngInit 指令是一种快速、声明性的方式来原型化或修复通常不应在编写良好的生产代码中使用的组件(尽管开发人员有权选择最适合他/她的组件)。
在init dummy 指令中做类似的事情
<p [init]="foo = 1; bar()"><p>
多次评估表达式并导致
模板解析错误:
解析器错误:绑定不能包含赋值
错误。
在 Angular 1.x 中,只需使用
$parse($attrs.init)($scope)
如何使用 Angular 2 解析器并可能对其进行扩展以在组件初始化时评估 foo = 1; bar() 模板表达式?
【问题讨论】:
-
Ng-init 走上了恐龙的道路。就像你说的,ngOnInit 是放置初始化代码的合适位置,那么他们为什么要保留 ng-init?您在该代码中所做的是尝试将初始化 bind 到一个值,这就是方括号所表示的。但值是一个表达式,正如 Angular 告诉你的那样,它不受支持。
-
我也非常想念 ng-init,但他已经走了。 RIP
-
@Amleonard 正如问题所说,ng-init 有它的用途,即使它经常被滥用。我知道括号代码绑定了不是所需行为的表达式,这只是我现在拥有的代码。问题是应该如何做才能匹配所需的行为。
标签: javascript angular typescript angular2-template angular2-directives