Angular2在刷新页面时不会注入模板CSS

前端之家收集整理的这篇文章主要介绍了Angular2在刷新页面时不会注入模板CSS前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序使用选择器投资组合应用程序,并有2个样式表 – ‘../app/styles/templateMobile.css’,’../app/styles/templateOther.css’

现在,当我从默认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注入无关.它与“如果你不介意我说”糟糕的设计,而不是使用ViewEncapsulation相关.

在我解释这个问题之前,我不得不说,你目前使用CSS的方式,你会更好地使用一个全局的CSS文件.

说明
当您不使用视图封装时,您导入的每个CSS将粘贴在页面中,直到您刷新它.它永远不会被删除.它将应用于页面上适用的任何元素.并且因为只有当您访问相应的组件/路由时,才会插入,当您刷新页面时,某些CSS不会被注入到页面中,因为您没有访问它所在的组件.

我将以类AppContainer为例来帮助解释问题.

在styles / landingOther.css你有:

.appContainer {
    width: 60%;
}

因为您的默认路线是/着陆,当您访问页面http:// localhost:3000 /时,.appContainer类将被注入页面,并将保留在页面上,直到您刷新.所以,当你路由到/投资组合时,appContainer仍然被注入到页面中,它将被应用.但是,当您直接访问http:// localhost:3000 /投资组合时,登陆组件不会被访问,因此.appContainer类从未注入到页面中,因此不会被应用.同样适用于其他类.我希望你得到逻辑.

另外,一个半关系的笔记,您的portfolio.component.ts中的css文件名称错误的.这是在大写的情况下,而实际文件是小套装.

原文链接:https://www.f2er.com/angularjs/142851.html

猜你在找的Angularjs相关文章