TypeScript函数继承

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未定义

为什么这不起作用?

bas*_*rat 5

构造函数不是继承的.

他们是.以下示例显示:

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)