Я пытаюсь создать компонент Icon
, который наследует свойства базового класса. Однако, когда создается экземпляр Icon
, ни один из свойств от super
не присутствует, свойство __proto__
не установлено.Наследование классов не работает
Я чувствую, что мне не хватает чего-то сверх очевидного. Я запустил очень простую кодированную версию кода и работает так, как ожидалось: CodePen Example
Однако, доведя его до контекста Углового 2, унаследованное свойство всегда undefined
.
BaseComponent.ts
export abstract class BaseComponent {
constructor() {
this.baseImagePath = '/Assets/Images';
}
baseImagePath: string;
}
Icon.ts
import {Component, Input} from 'angular2/core';
import {BaseComponent} from '../baseComponent';
@Component({
selector: 'lib-icon',
templateUrl: 'app/components/icon/icon.tmpl.html'
})
export class Icon extends BaseComponent {
@Input() icon: string;
constructor() {
super();
this.baseImagePath += '/icons/';
}
getSrc() {
return `${this.baseImagePath}${this.icon}`;
}
}
Я попытался переместить this.baseImagePath += '/icons/'
линию к ngOnInit
тоже на всякий случай - это всегда не определено.
Любое понимание того, что мне не хватает, было бы высоко оценено.
Можете ли вы сделать плункер? –
Я не понимаю, почему это не сработает. Наследование '@Input() ....' и '@Component (...)' stuff не поддерживается, но обычное наследование класса TS должно работать без проблем. –
Если бы я должен был догадаться, ваш импорт 'import {BaseComponent} из '../ baseComponent';' должен, вероятно, быть 'import {BaseComponent} из './baseComponent';'. Он работает так, как ожидалось, в этом [plunker] (http://plnkr.co/edit/utCvRzeOAgJK7L6GL6xY?p=preview) – Abdulrahman