2016-07-20 11 views
1

私は、TypescriptでAngular2を使用しています。Angular2クラス名の衝突

Inputというクラスを作成し、Inputアノテーションを使用するコンポーネントの1つで使用しようとしました。私は私のInputクラスのインスタンスを作成しようとしたときに今、私が原因「角度/コア@」から輸入Inputとの競合には明らかであるInputMetadataの間違ったインスタンスを得た:

import { Component, Input, OnInit } from '@angular/core'; 

import { Input } from '../controls/input'; 

@Component({ 
    moduleId: module.id, 
    selector: 'dynamic-form', 
    templateUrl: 'dynamic-form.component.html', 
    directives: [DynamicFormInputComponent, REACTIVE_FORM_DIRECTIVES], 
}) 
export class DynamicFormComponent implements OnInit { 
    ngOnInit() { 
     let control = new Input({}); 
     console.log(control); 

    } 
} 

する方法がありますクラスをローカルにエイリアスする私のInputはFormInputとしてインポートされます。そうでなければ、私のInputクラスの名前を変更せずにこの問題の解決策になります。

+1

'import {... as ....}' ... –

+0

私は実際にあなた自身のクラスの名前として '予約された名前'の使用を避けます。しかし、@ peeskilletのコメントはあなたを助けるはずです –

答えて

7

あなたはこのためにaliasing syntax of the import statementを使用することができます。

import { Input as InputControl } from '../controls/input'; 

// … 
let control = new InputControl({}); 

あなたはおそらく、それはコンポーネント、ディレクティブ、(フォーム)コントロールの場合、それは本当にはっきりしていないので、しかし、あなたのInputクラスはより説明作るために見てみたいです、 または、他の何か。