2016-04-13 15 views
2

基本クラスからプロパティを継承するIconコンポーネントを構築しようとしています。ただし、Iconがインスタンス化されると、superのプロパティは存在せず、__proto__プロパティは設定されません。クラス継承が機能しません

私は何か非常に明白なものを欠いているように感じる。私はコードの非常に単純なcodepenバージョンを実行し、期待どおりに動作します: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}`; 
    } 
} 

私は念のためにあまりにもngOnInitにしてthis.baseImagePath += '/icons/'ラインを移動しようとした - それは常に未定義です。

私が見逃していることについての洞察は非常に高く評価されます。

+0

プランナーを作ることはできますか? –

+0

これはなぜうまくいかないのか分かりません。 '@Input()....'や '@Component(...)'を継承することはサポートされていませんが、普通のTSクラスの継承は問題なく動作します。 –

+0

私が推測しなければならないのは、 '../baseComponent';からの 'import {BaseComponent}のインポートは' ./baseComponent 'の 'import {BaseComponent}'でなければなりません。この[plunker](http://plnkr.co/edit/utCvRzeOAgJK7L6GL6xY?p=preview)で期待どおりに動作します – Abdulrahman

答えて

0

ここにウサギの穴を覗いてお詫びします。 BaseComponent.tsがコンパイルされていなかった理由を問わず、コードをたどる時間の半分。 tscを数回実行すると、すべてが突然動作するようになりました。

ありがとうございました。

関連する問題