【发布时间】:2018-03-13 05:34:49
【问题描述】:
我有一个组件父级,它使用输入属性调用另一个组件子级。
该属性在子模板中可用,但在构造函数或 OnInit 中不可用。这是正常行为还是我做错了什么?
parent.component.ts
import {Component} from '@angular/core';
@Component({
selector: "parent",
template: `<child [name]="'foobar'"></child>`
})
export class ParentComponent
{
}
child.component.ts
import {Component, Input, OnInit} from '@angular/core';
@Component({
selector: "child",
template: "name={{ name }}"
})
export class ChildComponent
{
@Input () name:string="init";
constructor ()
{
console.log ("constr: " + name);
}
ngOnInit ()
{
console.log ("oninit: " + name);
}
}
编辑
更正了我的示例并将@Input 放入类中。
将我的示例更改为真实代码。 模板显示“foobar”,控制台显示一个空字符串。
【问题讨论】:
-
不一定要立即设置,如果你想访问值实现 OnChanges。另请注意,您可以为字符串值执行
name=“test”。 -
并且用 Input() 修饰的名称必须在类中。你为什么不发布一个完整的、真实的、最小的例子而不是一些伪代码。我们可以重现问题,而不必猜测可能是什么问题。
-
在将
name更改为this.name后无法重现(但同样,是因为此错误在您的代码中并且您忽略了 TypeScript 错误,还是因为您发布的内容是伪的代码?)plnkr.co/edit/8V86k9JQ5ZyDnZCCHgDt?p=preview
标签: angular typescript