Dan*_*edo 3 javascript inheritance typescript angular
我甚至不知道TypeScript中是否可以这样做,但我试图从类继承一个函数,如下所示:
import {Component, AfterViewInit, ElementRef} from 'angular2/core';
@Component({})
class Class1 {
name: string;
constructor(private el: ElementRef) {}
private setName() {
this.name = "test";
}
ngAfterViewInit() {
this.setName();
}
}
@Component({
selector: 'test'
})
export class Class2 extends Class1 {
ngAfterViewInit() {
super.ngAfterViewInit();
console.log(this.name);
}
}
Run Code Online (Sandbox Code Playgroud)
但是在调用setName()函数时我在控制台中收到以下错误:
EXCEPTION:TypeError:this.el未定义
为什么这不起作用?
构造函数不是继承的.
他们是.以下示例显示:
class Parent {
constructor(foo:number){}
}
class Child extends Parent {
}
const child1 = new Child(); // Error!
const child2 = new Child(123); // OKAY!
Run Code Online (Sandbox Code Playgroud)
但是,他们没有分析依赖注入.这意味着您的子类构造函数不会使用父项所期望的相同参数调用(在您的情况下为el).您需要在每个子类上指定所有DI元素.因此,正确的代码是接受答案的代码:
@Component({
selector: 'test'
})
export class Class2 extends Class1 {
constructor(el: ElementRef) {
super(el);
}
}
Run Code Online (Sandbox Code Playgroud)