模板属性是未定义的,而其他属性是? [英] Template property is undefined while others are?
本文介绍了模板属性是未定义的,而其他属性是?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试定义一个具有多个属性的简单组件:
I'm trying to define a simple component, with several properties :
randomFile.html :
<dico [dicoID]="201125" [dicoLang]="en" [delayedLoading]="false"></dico>
<dico [dicoID]="201126" [dicoLang]="en" [delayedLoading]="false"></dico>
这是我的组件定义:
dico.component.ts :
@Component({
selector: 'dico',
template: `{{text}}`
})
class Dico implements AfterViewInit {
@Input() private dicoID: string;
@Input() private dicoLang: string;
@Input() private delayedLoading :boolean;
public text: string = null;
constructor(...) {
}
ngAfterViewInit() {
alert(this.dicoID + " " + this.dicoLang + " " + this.delayedLoading);
// Output 1 => 201125 undefined false
// Output 2 => 201126 undefined false
(...)
}
(...)
}
----
@Component({
template: `<dico [dicoID] [dicoLang] [delayedLoading]></dico>`,
directives: [Dico]
})
// Définition du composant DicoComponent
export class DicoComponent {
}
正如您在ngAfterViewInit中看到的那样,第二个属性"dicoLang"是未定义的,我不明白为什么...我做错什么了吗?
As you can see in the ngAfterViewInit, the second property "dicoLang" is undefined, and I don't understand why... Am I doing something wrong ?
推荐答案
如果要直接在属性绑定内传递值,则应使用attribute
而不是property binding
.如果用[]
(属性绑定)包装属性,它将尝试使用Component
context(this
)评估该变量.
If you want to directly pass values inside property binding you should do use attribute
instead of property binding
. If you wrap your attribute with []
(property binding), it will try to evaluate that variable with Component
context(this
).
<dico dicoID="201125" dicoLang="en" [delayedLoading]="false"></dico>
<dico dicoID="201126" dicoLang="en" [delayedLoading]="false"></dico>
这篇关于模板属性是未定义的,而其他属性是?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文