我是Angular的新手,遇到了一个似乎有javascript工作的问题,但它们并不优雅。
我有一个带有数组属性的模型。我在list属性中构建了一些html选择选项。这一切都很好。当我尝试设置默认值时,问题出现了... html元素没有加载事件。
我尝试了很多html元素,他们似乎也没有加载事件,但我当然可能做错了。
我已经看到了在html之后放置javascript标签的解决方案,我可以这样做,但我真的在Angular中寻找更优雅的方式。
我看到了这个SO post并且认为这是我的答案,但是我发出了一个警告,我同意这一点,因此它似乎不是一个好的解决方案。 无论我试过它只是为了看它是否会起作用我得到了:
无法执行' setAttribute' on'元素':' {{loadDefaults()}}'不是有效的属性名称
<span {{loadDefaults()}} ></span>
那么如何在组件中触发AS2功能以加载默认值?
HTML(顺便说一下,这不是整页加载所以没有正文标记):
<tr>
<td *ngFor="let loc of locOptions;">
<span>{{loc.text}}</span>
<input type="radio" name="radiogroup" [value]="loc.value" (change)="onSelectionChange(loc.value)">
</td>
</tr>
修改
我认为错误地认为ngoninit会在html元素渲染之前过早发射。
所以也许建议的是我在模型中添加一个boolean默认值,并在渲染元素时绑定THAT。
答案 0 :(得分:3)
在你的ngonit函数中,将this.locOptions设置为默认值。稍后可以在任何函数中更改该值,并且更改将反映在视图中。希望这会对你有所帮助。
答案 1 :(得分:1)
您应该使用defaults : any;
ngOnInit {
this.defaults = loadDefaults();
}
loadDefaults() {
//get data
}
来初始化数据,并调用从您的组件中检索数据:
<span>{{defaults}}</span>
HTML:
{{1}}