2016-07-20 18 views
1

Ich verwende Angular2 mit Typescript.Angular2 Klassenname Kollision

Ich habe eine Klasse namens Input erstellt und versucht, es in einer der Komponenten zu verwenden, die Input Annotation verwendet. Nun, wenn ich versuchte, eine Instanz meiner Input Klasse zu erstellen, habe ich eine falsche Instanz InputMetadata die offenbar ist wegen des Konflikts mit Input importiert von ‚@ Winkel/core‘:

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); 

    } 
} 

Gibt es eine Möglichkeit zu Alias ​​eine Klasse lokal z so dass meine Input würde als FormInput importiert werden. Wenn nicht, was wäre eine vernünftige Lösung für dieses Problem ohne Umbenennung meiner Input Klasse.

+1

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

+0

Ich würde wirklich vermeiden, 'reservierte Namen' als Namen für Ihre eigenen Klassen zu verwenden. Aber der Kommentar von @ Peeskillet sollte dir helfen –

Antwort

7

Sie können die aliasing syntax of the import statement für diesen Einsatz:

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

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

Sie wahrscheinlich für die Herstellung Ihrer Input Klasse kräftigeren obwohl aussehen wollen, da es nicht wirklich klar ist, ob es sich um eine Komponente ist, eine Richtlinie, eine (Form) Kontrolle , oder etwas anderes.