2016-08-12 6 views
7

In meinem eckigen 2 (RC5) Projekt habe ich eine Reihe von Komponenten, die alle gut funktionieren, jedoch habe ich ein Submodul hinzugefügt, die gut funktioniert mit Ausnahme der styleUrl Eigenschaft childComponent. Wenn ich den gleichen URL-Pfad in der tutorial (Wurzelkomponente des Submoduls) verwenden, werden die Stile angewendet. Wenn ich den genau gleichen Pfad der chapter (Unterkomponente des Untermoduls) hinzufügen, dann werden die Stile nicht angewendet?styleUrls nicht in angular2 geladen ChildComponent (RC5)

Es gibt keine 404 in den Blogs und Chrome-Dev-Tools zeigen chapter.css nicht als Quelle, oder etwas im Netzwerk vorhanden.

Hier können Sie die Komponente sehen mich das Problem verursacht:

@Component({ 
    selector: 'chapter', 
    template: `<div [innerHTML]="content"></div>`, 
    styleUrls: ['app/tutorial/chapter/chapter.css'] 
}) 
export class chapterComponent implements OnInit, OnDestroy { 
    private sub: Subscription; 
    private content: string = ''; 

    constructor(private route: ActivatedRoute) { } 

    ngOnInit() { 
    this.sub = this.route.params.subscribe(params => { 
     var that = this; 
     var _url = './chapter/' + params['id'] + '.html'; 
     $.ajax({ 
     url: _url, 
     success: function (result) { 
      that.content = result; 
     } 
     }); 
    }); 
    } 
} 

chapter.css nicht abgeholt ... Sie können mein Projekt sehen hier Dateien:

 |-- error.html', 
     |-- index.html', 
     |-- app', 
      |-- app.component.ts', 
      |-- app.module.ts', 
      |-- app.routes.ts', 
      |-- main.ts', 
      |-- home', 
      | |-- home.component.ts', 
      | |-- home.css', 
      | |-- home.html', 
      |-- tutorial', 
       |-- tutorial.component.ts', 
       |-- tutorial.css', 
       |-- tutorial.html', 
       |-- tutorial.module.ts', 
       |-- tutorial.routes.ts', 
       |-- chapter', 
        |-- chapter.component.ts', 
        |-- chapter.css', 
        |-- chapter.html', 

Warum funktioniert nur Diese Komponente funktioniert nicht ... Der einzige Unterschied, den ich sehen kann, ist, dass diese Komponente eine Kindkomponente ist, also hat das vielleicht einen Unterschied gemacht?

Update:

Wie auf den Antworten in den Kommentaren erwähnt, den Pfad mit ./app/tutorial/chapter/chapter.css im Tutorial Komponente funktioniert, aber exakt die gleiche Weg funktioniert nicht im Kapitel Komponente (die eine untergeordnete Komponente ist). Ich habe auch ViewEncapsulation aber es hat nicht funktioniert ...

+0

Glaubst du nicht, dass es '/app/tutorial/chapter/chapter.css' (genau) sein sollte? ODER './Chapter/chapter.css' –

+0

oder versuchen Sie es ./app/tutorial/chapter/chapter.css – Bean0341

+0

Wie bauen Sie Ihr Projekt auf? ist webpack beteiligt? – Jim

Antwort

11

Versuchen Hinzufügen „Verkapselung: ViewEncapsulation.None“, um Ihre Stammkomponente

import {ViewEncapsulation} from '@angular/core'; 

    @Component({ 
     encapsulation: ViewEncapsulation.None 
    }) 
+0

hmm, ich fürchte, das macht keinen Unterschied? –

+0

Danke, arbeitete für mich –

0

ändern styleUrls: ['app/tutorial/chapter/chapter.css']-styleUrls: ['./app/tutorial/chapter/chapter.css'].

Falls Sie sich gefragt haben, das . in ./app/tutorial/chapter/chapter.css gibt das aktuelle Verzeichnis an.

+0

Wenn ich diesen Pfad in der Tutorial-Komponente verwenden, funktionieren die Stile. Wenn ich es in der Kapitelkomponente verwende, ist es nicht ... –

1

http://blog.thoughtram.io/angular/2016/06/08/component-relative-paths-in-angular-2.html Dieser Artikel bietet verschiedene Möglichkeiten, das Problem relativer Pfade mit verschiedenen Modulladeprogrammen zu lösen. Das hat mir geholfen, darüber nachzudenken, was falsch war, als ich ein ähnliches Problem hatte (obwohl ich Webpack benutze, aber das sollte nichts ausmachen).

Die wichtigste Lektion ist, die ModuleId: module.id im @Component Dekorator zu setzen! Ohne die Einstellung von ModuleId sucht Angular 2 nach unseren Dateien in Pfaden relativ zum Anwendungsstamm.

Und vergessen Sie nicht das "Modul": "commonjs" in Ihrem tsconfig.json.

Verwandte Themen