【问题标题】:angular2: property binding not foundangular2:未找到属性绑定
【发布时间】:2017-04-28 14:52:06
【问题描述】:

component+template 被渲染时,我从 angular2 收到这条消息:

无法绑定到“类型”,因为它不是“警报”的已知属性。

我已经创建了这个组件:

interface Alert {
    type: string;
    msg: string;
}

@Component({
  selector: 'signin',
  styleUrls: [ './signin.style.scss' ],
  templateUrl: './signin.template.html',
  encapsulation: ViewEncapsulation.None,
  host: {
    class: 'signin-page app'
  }
})
export class Signin implements OnInit {

    private form:FormGroup;
    private alerts: Array<Alert>;

    constructor(private fb: FormBuilder, private commty: UsersService) {}

    ngOnInit():void {
        //...
    }

    private addAlert(message: string): void {
        this.alerts.push({type: 'danger', msg: message});
    }

    public closeAlert(index): void {
        this.alerts.splice(index, 1);
    };
}

相关的html模板代码为:

<alert *ngFor="let alert of alerts; let i = index" [type]="alert.type + ' alert-sm'" (close)="closeAlert(i)" dismissible="true">
    <div [innerHTML]="alert.msg"></div>
</alert>

【问题讨论】:

    标签: angular


    【解决方案1】:

    type不是html dom元素的默认属性(alert dom是shadow dom)

    https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM

    <alert *ngFor="let alert of alerts; let i = index" [attr.type]="alert.type + ' alert-sm'" (close)="closeAlert(i)" dismissible="true">
        <div [innerHTML]="alert.msg"></div>
    </alert>
    

    【讨论】:

    • 谢谢@anshu。我不太明白你的评论是什么意思。我不是使用 angular2 的忍者。你能更好地解释一下[attr.type]=是什么意思吗?
    • alert 不是 html 元素,而 anguler 将其设为“sudo 元素”意味着由 angular 创建的元素,因此这些元素上的属性将以不同的方式工作。请阅读更多信息toddmotto.com/…
    猜你喜欢
    • 1970-01-01
    • 2020-04-19
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多