2016-11-29 2 views
1

Ich habe diese Angular 2 Schablone, die Anzeige Registerkarten meiner Website:Angular 2 und webpack: unerwarteter Schluss-Tag "a"

<div id="menu"> 
    <ul id="tabs"> 
     <li *ngFor="let tab of tabs; let i = index" [class.active]="selectedTab===i"> 
      <a routerLink="/private/home/{{i}}">{{tab}}</a> 
     </li> 
    </ul> 
</div> 

<div class="tabContent"> 
    <span *ngIf="selectedTab==0"><welcome></welcome></span> 
    <span *ngIf="selectedTab==1"><boiler></boiler></span> 
</div> 

Es ist durchaus gut funktioniert. Dann versuche ich, Webpack mit der Standardoption zu verwenden, um eine einzigartige * .js-Datei zu erstellen: es funktioniert immer noch. Schließlich in Webpack, ich aktiv die Möglichkeit, die JS-Datei zu minimieren und ich bekomme diese Fehlermeldung:

Unexpected closing tag "a" (" of tabs; let i = index" [class.active]="selectedTab===i"> 
<a routerlink=/private/home/{{i}}>{{tab}}[ERROR ->]</a> </li> </ul> </div>     
<div class=tabContent> <span *ngif="selectedTab==0"><welcome></welcome></span") 

Jede Idee zu diesem Fehler?

Hier die zugehörige Code generiert durch Webpack:

function(t,e){t.exports='<div id=menu> <ul id=tabs> <li *ngfor="let tab of tabs; 
let i = index" [class.active]="selectedTab===i"> 
<a routerlink=/private/home/{{i}}>{{tab}}</a> </li> </ul> </div> <div class=tabContent> 
<span *ngif="selectedTab==0"><welcome></welcome></span> <span *ngif="selectedTab==1"> 
<boiler></boiler></span> </div>'} 
+0

Ein paar Dinge: Sie sind die 'Winkel cli' mit? Ich bin überrascht, dass das funktioniert. 'routerLink' sollte eine gebundene Eigenschaft sein und akzeptiert ein [Array von Werten] (https://angular.io/docs/ts/latest/guide/router.html#!#link-parameters-array), das einen Pfad darstellt, also Es sollte wie folgt aussehen: '. Und schließlich gibt es einen Grund, warum Sie '* ngIf' verwenden, um eine Komponente anstelle von' 'zu rendern? Router Outlet ist der richtige Weg, um dies zu tun, aber ich bin interessiert zu wissen, ob es einen bestimmten Fall gibt, der es so erfordert. – filoxo

Antwort

4

Ich denke, das Problem mit dem htmlLoader ist. Abhängig von Ihrer Webpack-Version sollten Sie die Option minimize in Ihrer Webpack-Konfiguration auf false setzen.

webpack 1 (innerhalb der Wurzel Ihrer Konfiguration)

htmlLoader: { 
    minimize: false 
}, 

webpack 2

plugins: [ 
    new webpack.LoaderOptionsPlugin({ 
     options : { 
      htmlLoader : { 
       minimize : false 
      } 
     } 
    }) 

] 
0

/private/home/{{i}} -> das ist nicht in "".

versuchen, dies für Router

<a [routerLink]="['/private/home/',i]">{{tab}}</a> 
+0

Danke. Es funktioniert, aber jetzt habe ich viele Fehler in anderen Dateien. Es scheint, dass Webpack die Angular 2-Syntax nicht korrekt verarbeitet, wenn die Vorlagendatei nicht in .ts-Dateien eingebunden ist. –

+0

Ich arbeite mit eckigen Version 2.2.x und eckig-cli und ich habe die Vorlage Dateien an anderer Stelle und sieht gut aus. Wenn Sie irgendein Problem haben, lassen Sie uns Ihnen helfen. –

Verwandte Themen