10

我正在尝试将 CSS 类绑定foo到我的主机组件,@HostBinding具体取决于我对动态变量所做的测试。但无法使其正常工作。
这是我已经尝试过的:

export class MyComponent {
    @Input()
    public input: string;

    @HostBinding('class.foo')
    public isFoo: Boolean = this.inputIsCorrect();

    constructor() {
    }

    private inputIsCorrect(){
        return (this.input != 'not correct');
    }
}

我怎样才能使它工作?我也许在想办法听input变化?

4

2 回答 2

13

试试这个方法。制作 @Input 属性 getter/setter 并isFoo从 setter 设置。

export class MyComponent {   
     @Input()
        public get input (): string {
          return this._input;
        }
        public set input (val: string) {
          this._input = val;
          // when the input is set check it and set isFoo;
          this.isFoo = (val != 'not correct');
        }

        @HostBinding('class.foo')
        public isFoo: Boolean = false; // false is init value

        constructor() {
        }
    }
于 2017-07-05T10:28:15.740 回答
6

你所做的几乎是正确的:

export class MyComponent {
    @Input()
    public input: string;

    @HostBinding('class.foo')
    public get isFoo(): Boolean {
        return this.input !== 'not correct';
    }

}
于 2017-07-05T11:37:07.023 回答