2016-10-19 3 views
0

ich dies mit: https://github.com/AngularClass/angular2-webpack-starter In dieser Datei src/app/home/home.component.ts, ich ändern Sie es mit einem neuen "fancy-Button" Richtlinie und sind es etwa so:Fehler beim Analysieren von Vorlagen beim Versuch, eine neue Komponente/Anweisung in angular2-webpack zu erstellen?

@Component({ 
    selector: 'fancy-button', 
    template: `<button>clickme</button>` 
}) 
export class FancyButton {} 

@Component({ 
    // The selector is what angular internally uses 
    // for `document.querySelectorAll(selector)` in our index.html 
    // where, in this case, selector is the string 'home' 
    selector: 'home', // <home></home> 
    // We need to tell Angular's Dependency Injection which providers are in our app. 
    providers: [ 
    Title 
    ], 
    // Our list of styles in our component. We may add more to compose many styles together 
    styleUrls: [ './home.component.css' ], 
    // Every Angular template is first compiled by the browser before Angular runs it's compiler 
    templateUrl: './home.component.html', 
    directives: [FancyButton], 
}) 

Und dann in der Vorlage: src/app/home/home.component.html

ich hinzugefügt:

<fancy-button></fancy-button> 

ich die Fehlermeldung main.browser.ts:25Error: Template parse errors:(…)

erhalten 0.123.

Wenn ich aus der home.component.html entfernen, gibt es keine Beschwerden. Wie komme ich hier zurecht? Ich bekomme wirklich nicht, warum dies beschweren ...

+0

Überprüfen Sie diese http://stackoverflow.com/questions/39454379/angular-2-directives-argument-of-type-is-not-assignable-to/39454416#39454416 – yurzui

+0

Das scheint etwas albern, also muss ich FancyButton in eine externe Datei verschieben und nicht einfach in die gleiche Datei wie "home.component.ts" einfügen? Ich dachte daran, alles nur in home.component.ts zum Testen zu behalten. Mit der Antwort, die dieser Link vorschlägt, muss ich in meine app.module.ts Datei gehen, eine "fancybutton.component.ts" Datei importieren, sie in @NgModules einbinden, und ich muss sie erneut auf home.component importieren .ts, um es zu benutzen ... das scheint eine zusätzliche Arbeit zu sein, als einfach keine separate Datei dafür zu erstellen und sie so einzuschließen, wie ich es in meinem Beitrag getan habe. Ist es wirklich nicht möglich, es einfacher zu machen? – Rolando

+0

Sie müssen diese Komponente zum Dekorations-Array Ihres Moduls hinzufügen. Ich weiß nicht, wo sich Ihr Modul – yurzui

Antwort

0

Sie haben folgendes zu tun:

import { HomeComponent, FancyButton } from './home.component'; 

@NgModule({ 
    imports:  [ BrowserModule ], 
    declarations: [ HomeComponent, FancyButton ], <== add this 
    bootstrap: [ HomeComponent ] 
}) 
export class AppModule { } 

Auch wenn Sie auf (…) klicken dann die volle Fehlermeldung wird angezeigt

Verwandte Themen