2016-08-08 4 views
0

Während nach dem Tutorial für Formulare bei https://angular.io/docs/ts/latest/guide/forms.htmltemplateUrl undefined geben, wenn die Klasse Eigenschaften beziehen

ich nicht definiert Fehler immer behalten, wenn auf eine der Eigenschaften beziehen, die so lange in den .ts definiert Datei als ich templateUrl und eine seperate .html

Wenn ich die gleiche html und Platz in der .ts-Datei innerhalb `` in Vorlage alles funktioniert gut.

Also meine Frage ist: Muss die templateURl Datei irgendwie Umfang definieren? Das Tutorial scheint nichts darüber zu sagen und ich nahm an, dass es Zugriff auf die Komponentenvariablen erhalten würde, die es aufgerufen haben.

import { Component } from '@angular/core'; 
import { NgForm } from '@angular/forms'; 

import { Guitar } from './guitar'; 

@Component({ 
    selector: 'guitar-form', 
// template: ` 
// <div class="container"> 
// <h1>Guitar Form</h1> 
// <form> 
//  <div class="form-group"> 
//  <label for="brand">Brand</label> 
//  <select class="form-control" required 
//     [(ngModel)]="testmodel.brand" name="brand"> 
//   <option *ngFor="let b of brands" [value]="b">{{b}}</option> 
//  </select> 
//  TODO: remove this: {{testmodel.brand}} 
//  </div> 

//  <div class="form-group"> 
//  <label for="model">Model</label> 
//  <input type="text" class="form-control" required 
//   [(ngModel)]="testmodel.model" name="model"> 
//   TODO: remove this: {{testmodel.model}} 
//  </div> 

//  <div class="form-group"> 
//  <label for="color">Color</label> 
//  <input type="text" class="form-control" 
//    [(ngModel)]="testmodel.color" name="color"> 
//     TODO: remove this: {{testmodel.color}} 
//  </div> 

//  <button type="submit" class="btn btn-default">Submit</button> 
// </form> 
// </div> 
// ` 
    templateUrl: 'app/guitar-form.component.html' 
}) 
export class GuitarFormComponent { 

    brands = ['Fender', 'Gibson', 'Guild', 'Jackson', 'Epiphone', 'Charvel']; 

    testmodel = new Guitar(69, this.brands[0], 'Stratocaster', 'Black'); 

    submitted = false; 

    onSubmit() { this.submitted = true; } 

    // TODO: remove this when we're done 
    get diagnostic() { return JSON.stringify(this.model); } 
} 

Lustig, die undefinierte verschwunden, als ich es bemerkte, so konnte ich zeigen, aber ironischerweise die Diagnose nicht mehr funktioniert, wenn sie in dem HTML-Code platziert, und dies war der einzige Aspekt, der früher arbeitet. Ich habe Konnektivität auf individueller Basis verifizierter ...

<div class="container"> 
    <h1>Guitar Form</h1> 
    <form> 
    {{ diagnostic }} 
    <div class="form-group"> 
     <label for="brand">Brand</label> 
     <select class="form-control" required 
       [(ngModel)]="testmodel.brand" name="brand"> 
     <option *ngFor="let b of brands" [value]="b">{{b}}</option> 

     </select> 
       {{ testmodel.brand }} 
    </div> 

    <div class="form-group"> 
     <label for="model">Model</label> 
     <input type="text" class="form-control" required 
     [(ngModel)]="testmodel.model" name="model"> 
     TODO: remove this: {{testmodel.model}} --> 
    </div> 

    <div class="form-group"> 
     <label for="color">Color</label> 
     <input type="text" class="form-control" 
     [(ngModel)]="testmodel.color" name="color"> 
     {{ testmodel.color }} 
    </div> 

    <button type="submit" class="btn btn-default">Submit</button> 
    </form> 
</div> 
+3

Code Bitte teilen. – Sanket

+0

Auch Ihre Ordnerstruktur, es ist möglich, dass Ihre VorlageUrl nicht korrekt referenziert wird. – Bean0341

+0

Nach dem Zurückgehen und Kommentieren der html: – Storeybox

Antwort

0

Ich glaube, Sie

moduleId: module.id, 

zum @Component({...}) Dekorateur hinzufügen müssen.

Siehe auch Angular2 - What is the meanings of module.id in component?

+0

Das Hinzufügen von moduleId erlaubt mir, die App/vor dem Namen .html zu entfernen, aber es löste das Diagnoseproblem nicht – Storeybox

+0

Sorry, keine Ahnung. Ich benutze nur Dart und das funktioniert dort anders. –

+0

Die Diagnose erwies sich als ein Tippfehler – Storeybox

Verwandte Themen