我正在测试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没有以任何方式设置样式。任何人都有类似的问题,并知道如何解决这个问题?
答案 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
});
}
}