Angular:布尔输入属性未正确传递问题求助
问题原因与修复方案
1. 模板绑定的是字符串而非布尔值
如果你的模板里写的是<my-select sortOptionsByLabel="false" />(未使用方括号),Angular会把"false"当作字符串处理——非空字符串在布尔上下文里会被解析为true。
正确的布尔值绑定必须用方括号包裹表达式,直接传入布尔字面量:
<my-select [sortOptionsByLabel]="false" />
2. 方法调用时机过早
如果someProcess()是在构造函数里执行的,此时Angular还未完成输入属性的赋值流程,会使用默认值true。
要等到输入属性绑定完成后再执行逻辑,把方法调用移到ngOnInit钩子中:
import { Component, Input, OnInit } from '@angular/core'; @Component({ selector: 'my-select', standalone: true, }) export class MySelect implements OnInit { @Input() sortOptionsByLabel: boolean = true; ngOnInit(): void { this.someProcess(); } someProcess(){ console.log(this.sortOptionsByLabel); } }
3. 属性名拼写/别名不匹配
检查模板中的属性名sortOptionsByLabel和组件里@Input()标注的属性名是否完全一致(Angular对属性名大小写敏感)。如果组件里给输入属性设置了别名,比如:
@Input('sort-label') sortOptionsByLabel: boolean = true;
那模板里必须用别名绑定:<my-select [sort-label]="false" />,否则无法正确赋值,会沿用默认值。
内容的提问来源于stack exchange,提问作者Tamás Bárasz
相关产品推荐
相关产品推荐

