2016-11-11 4 views
2

Ich versuche ein Formular basierend auf angular2dart zu erstellen.Klasse 'NgForm' hat keine Instanz getter 'user'

Die Komponentenklasse:

@Component(
     selector: 'start-app', 
     directives: const[materialInputDirectives], 
     styleUrls: const ['login_component.css'], 
     templateUrl: 'login_component.html') 
    class LoginComponent { 

     String scaleImg = 'packages/wp_login/assets/scale.svg'; 
     Login login = new Login(); 

     onSubmit() { 
     print('Submit'); 
     } 

    } 

und die Vorlage:

<div class="container"> 
    <div class="row"> 
     <div class="image"> 
      <img [src]="scaleImg"> 
     </div> 
     <div class="forms"> 
      <form (ngSubmit)="onSubmit()" #login="ngForm"> 
       <div> 
        <material-input type="text" label="User" [(ngModel)]="login.user"></material-input> 
       </div> 
       <div> 
        <material-input type="password" label="Password" [(ngModel)]="login.password"></material-input> 
       </div> 
       <div> 
        <material-input type="text" label="Language" [(ngModel)]="login.language"></material-input> 
       </div> 
       <div> 

       </div> 

      </form> 
     </div> 
    </div> 
</div> 

und ich habe ther Fehler bekam:

enter image description here

Was mache ich falsch?

Antwort

3
#login="ngForm" 

erstellt einen Template-Variable login, die die NgForm Richtlinie verweist.

[(ngModel)]="login.user" 

schlägt fehl, da login die #login="ngForm" template variable and the error message is right about that it doesn't have a property user` verweist.

Sie müssen entweder die Vorlagenvariable oder die Eigenschaft Ihrer Komponente umbenennen.

+0

Vor allem, vielen Dank. Ich benenne '# Login' in' # loginCtrl' um. Um eine Instanz von Login zu erstellen, sollte ich auf 'ngOnInit' gehen? –

+0

Sollte in Ordnung sein, wo es ist. Es muss nur ni'ngOnInit() 'sein, wenn es zum Beispiel auf Werte ankommt, die an' @Input() 's übergeben werden –

Verwandte Themen