2016-05-25 7 views
0

Ich bekomme einen seltsamen Fehler, wenn ich versuche, TemplateUrl in meiner Komponente zu setzen.Kann TemplateUrl in Angular2 nicht setzen

Dies funktioniert:

@Component({ 
    selector: 'buildingInfo', 
    template: ` 
     <html>stuff</html> 
    ` 
}) 

Aber wenn ich dies tun (mit dem gleichen Inhalt in der HTML-Datei):

@Component({ 
    selector: 'buildingInfo', 
    templateUrl: 'stuff.component.html' 
}) 

der Ausgang ist dies:

<span>M</span> 
<span>M</span> 
<fakediscoveryelement></fakediscoveryelement> 
<span>M</span> 
<fakediscoveryelement></fakediscoveryelement> 
<span>M</span> 
<span>M</span> 
<span>M</span> 
<span>M</span> 
<span>M</span> 
<span>M</span> 
<span>M</span> 
<span>M</span> 

Ich habe keine Ahnung, warum das passiert. Ich bekomme die gleiche Ausgabe, wenn ich versuche, eine separate Datei für HTML auf fast allen anderen Komponenten (aber nicht alle) zu verwenden.

Antwort

3

Wenn Sie möchten, dass Angular die Vorlagen relativ zur Komponente findet, z. Sie haben eine Struktur wie

app/

app/app.component.ts

app/app.component.html

stellen Sie sicher, Sie das Modul-ID der Komponente festgelegt. Dadurch wird der Systemlader relativ zu Ihrem aktuellen Pfad angezeigt. Andernfalls wird immer den vollständigen Pfad als URL erwarten.

Beispiel für SystemJS:

declare var __moduleName: string; 
@Component({ 
    moduleId: __moduleName, 
    selector: 'foo-bar', 
    templateUrl: 'app.component.html', 
}) 

Beispiel für andere:

@Component({ 
     moduleId: module.id, 
     selector: 'foo-bar', 
     templateUrl: 'app.component.html', 
    }) 

Es dauerte einige Zeit, um dieses :)

1

Sie können kein Tag in Ihrer Vorlage haben. <html> ist ein Top-Level-Tag in einer HTML-Datei und eine Angular-Anwendung kann nur auf oder innerhalb von <body> verwendet werden und <body> kann kein <html>-Tag enthalten.

+0

Es war nur ein Beispiel für HTML-Inhalt i haben da ... –

+0

Kannst du in einem Plunker reproduzieren? –

Verwandte Themen