现在,当我从默认URL(localhost:3000 ATM)打开我的应用程序时,样式表将被正确应用.但是当我去不同的路由,并按刷新(F5),模板样式不会应用于页面.当我从不同的路线开始时也会发生同样的事情.
控制台中没有错误信息.
我在firefox,chrome和safari,无痕模式和清除浏览器缓存中进行了测试.我还在LG G2,iPhone,iPad和各种Android模拟器(Nexus 9,Nexus 10,Galaxy Nexus)上进行了测试.所有的时间结果是一样的.
app.component:
import { Component } from 'angular2/core'; import {ViewEncapsulation} from 'angular2/core'; import { ROUTER_PROVIDERS,ROUTER_DIRECTIVES,RouteConfig } from 'angular2/router'; import { LandingComponent } from './landing.component'; import { PortfolioComponent } from './portfolio.component'; import { PagesService } from './pages.service'; @Component({ selector: 'portfolio-app',templateUrl: '/app/views/template.html',styleUrls: ['../app/styles/templateMobile.css','../app/styles/templateOther.css'],encapsulation: ViewEncapsulation.None,directives: [ROUTER_DIRECTIVES],providers: [ROUTER_PROVIDERS,PagesService] }) @RouteConfig([ { path: '/landing',name: 'Landing',component: LandingComponent,useAsDefault: true },{ path: '/portfolio',name: 'Portfolio',component: PortfolioComponent } ]) export class AppComponent { landing = true; portfolio = false; changeMiniNavLanding = function () { this.landing = true; this.portfolio = false; } changeMiniNavPortfolio = function () { this.landing = false; this.portfolio = true; } }
主要:
import {bootstrap} from 'angular2/platform/browser'; import {AppComponent} from './app.component'; bootstrap(AppComponent);
如果您需要其他信息,请咨询或浏览gitHub存储库. (所有相关文件都在应用程序文件夹中).
谢谢您的帮助.
在我解释这个问题之前,我不得不说,你目前使用CSS的方式,你会更好地使用一个全局的CSS文件.
说明
当您不使用视图封装时,您导入的每个CSS将粘贴在页面中,直到您刷新它.它永远不会被删除.它将应用于页面上适用的任何元素.并且因为只有当您访问相应的组件/路由时,才会插入,当您刷新页面时,某些CSS不会被注入到页面中,因为您没有访问它所在的组件.
我将以类AppContainer为例来帮助解释问题.
在styles / landingOther.css你有:
.appContainer { width: 60%; }
因为您的默认路线是/着陆,当您访问页面http:// localhost:3000 /时,.appContainer类将被注入页面,并将保留在页面上,直到您刷新.所以,当你路由到/投资组合时,appContainer仍然被注入到页面中,它将被应用.但是,当您直接访问http:// localhost:3000 /投资组合时,登陆组件不会被访问,因此.appContainer类从未注入到页面中,因此不会被应用.同样适用于其他类.我希望你得到逻辑.
另外,一个半关系的笔记,您的portfolio.component.ts中的css文件名称是错误的.这是在大写的情况下,而实际文件是小套装.