【发布时间】:2016-07-04 11:21:52
【问题描述】:
在编写 Angular 2.0 组件时,如何设置属性的默认值?
例如 - 我想默认将 foo 设置为 'bar',但绑定可能会立即解析为 'baz'。这如何在生命周期挂钩中发挥作用?
@Component({
selector: 'foo-component'
})
export class FooComponent {
@Input()
foo: string = 'bar';
@Input()
zalgo: string;
ngOnChanges(changes){
console.log(this.foo);
console.log(changes.foo ? changes.foo.previousValue : undefined);
console.log(changes.foo ? changes.foo.currentValue : undefined);
}
}
鉴于以下模板,这是我期望的值。我错了吗?
<foo-component [foo] = 'baz'></foo-component>
登录到控制台:
'baz'
'bar'
'baz'
<foo-component [zalgo] = 'released'></foo-component>
登录到控制台:
'bar'
undefined
undefined
【问题讨论】:
-
当你尝试它会发生什么?
-
@BryanRayner 当前控制台的打印方式是正确的。您面临的问题是什么?
-
我目前没有遇到问题,只是寻求对预期行为的澄清。当我找不到我的好奇心的答案时,我决定问这个问题,以防其他人也有同样的清晰愿望。
-
在您的示例中,您缺少 @Input() 上的括号
-
对于那些仍在寻找答案的人,在 Angular 官方文档中有“输入设置器强制”,您可以在其中使用输入的获取器和设置器。 angular.io/guide/template-typecheck#input-setter-coercion
标签: angular typescript