确保实现组件输入和输出角度4

时间:2017-07-31 08:55:43

标签: angular

我想创建一个界面,强制执行任何人使用@Input()@Output()

这是我的界面:

export interface BannerInterface {
  currentEvents: Input,
  _bannerClick: Output
}

我实现它的组件:

  @Input()
  set currentEvents(currentEvents: any[]) {
    this.currentEvent = currentEvents[0];
  }

  @Output() _bannerClick: EventEmitter<any> = new EventEmitter();

这给我一个错误,我错误地使用了界面。 我理解接口可以强制执行类型而不是装饰器(我构建的接口不能使用这些类型),但我想知道是否有一种方法可以强制属性为@Input()和{{1} }。

1 个答案:

答案 0 :(得分:0)

您可以为每个组件使用抽象类:

export abstract class Component {
    @Input()
    abstract set currentEvents(currentEvents: any[]);

    @Output()
    abstract get output();
}

export class FooComponent extends Component{
    set currentEvents(currentEvents: any[]) {
        //Your implementation.
    }

    get output() {
        //Your implementation.
    }
}

我目前还没有工具来测试这个,但这应该可行,因为装饰器遵循继承。无论如何,我没有看到你想要这样做的用例。