Angular Universal CSS导入无效

时间:2017-01-05 09:23:09

标签: css twitter-bootstrap angular angular-universal

我正在测试Angular Universal如何处理第三方JavaScript和CSS库的导入。为了便于使用,我尝试使用jQuery和Bootstrap。

我使用Universal Starter repo https://github.com/angular/universal-starter并通过npm安装了jQuery和Bootstrap。

在我的app.component.ts中,我包含了jQuery,它完美无瑕。

import { isBrowser, isNode } from 'angular2-universal'
var jQuery: any = require('jquery');

...

@Component({
  changeDetection: ChangeDetectionStrategy.Default,
  encapsulation: ViewEncapsulation.Emulated,
  selector: 'app',
  templateUrl: './app.component.html'
})
export class AppComponent implements OnInit {
  title = 'ftw';

  ngOnInit(): void {
    if (isBrowser) {
      jQuery('#universal').css({'color': '#FF0000', 'font-size': '25px'})
    }
  }
}

虽然当我想导入一个css文件时,它仍然无法正常工作。我在app/client.ts文件中导入它,如下所示。

...
// Angular 2
import { enableProdMode } from '@angular/core';
import { platformUniversalDynamic } from 'angular2-universal/browser';
import { bootloader } from '@angularclass/bootloader';

import { load as loadWebFont } from 'webfontloader';

import 'bootstrap/dist/css/bootstrap.css';

// enable prod for faster renders
enableProdMode();
...

实际的Bootstrap css在我的Webpack包中,但我的HTML没有以任何方式设置样式。任何人都有类似的问题,并知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

为了使Item first = new Item(); Item second = new Item(); Item third = new Item(); List<Item> list = Arrays.asList(first, second, three); adapter.add(list); adapter.notifyDataSetChanged(); recyclerView.post(new Runnable() { @Override public void run() { int sumHeight = 0; for (int i = 0; i < recyclerView.getChildCount(); i++) { View view = recyclerView.getChildAt(i); sumHeight += view.getHeight(); } if (sumHeight < recyclerView.getHeight()) { adapter.addItem(new VerticalSpaceViewModel(recyclerView.getHeight() - sumHeight + recyclerView.getChildAt(0).getHeight())); } linearLayoutManager.scrollToPositionWithOffset(1, 0); } }); 正常工作,您需要style loader,而不需要安装通用启动器回购。旁注:如果您按原样使用bootstrap.css,并且想要使用universal-starter,则可以将bootstrap.min.css复制到assets文件夹中,并在index.html中为其添加链接标记。

答案 1 :(得分:0)

转到Angular CLI项目文件夹根目录下的angular-cli.json或angular.json文件,找到脚本:[]属性,并包括jQuery的路径,如下所示:

"scripts": [ "../node_modules/jquery/dist/jquery.min.js",
"../node_modules/bootstrap/dist/js/bootstrap.js"]

现在,要使用jQuery,您要做的就是将其导入到您想使用jQuery的任何组件中。

import * as $ from 'jquery';
(or)
declare var $: any;

import { Component, OnInit  } from '@angular/core';
import * as $ from 'jquery';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {

  ngOnInit()
  {
    $(document).ready(function(){
       // your code
    });
  }
}