2016-04-13 4 views
2

Я пытаюсь создать компонент 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 тоже на всякий случай - это всегда не определено.

Любое понимание того, что мне не хватает, было бы высоко оценено.

+0

Можете ли вы сделать плункер? –

+0

Я не понимаю, почему это не сработает. Наследование '@Input() ....' и '@Component (...)' stuff не поддерживается, но обычное наследование класса TS должно работать без проблем. –

+0

Если бы я должен был догадаться, ваш импорт 'import {BaseComponent} из '../ baseComponent';' должен, вероятно, быть 'import {BaseComponent} из './baseComponent';'. Он работает так, как ожидалось, в этом [plunker] (http://plnkr.co/edit/utCvRzeOAgJK7L6GL6xY?p=preview) – Abdulrahman

ответ

0

Извинения за поездку по кроличьей дыре здесь. Полчаса ходьбы по коду, по какой-то причине BaseComponent.ts не собирался. Запустите tsc несколько раз, и все это внезапно начало работать.

Спасибо за помощь всем!

Смежные вопросы