未应用 angular2 的主要 ng 样式
prime ng styles not applying angular2
你好,我刚开始使用 angular 2. 我找到了这个库 PrimeNG,我遵循了这个教程:
http://blog.davincisoftware.sk/primeng-web-component-framework-based-on-angularjs-2
这一切都有效,除了样式。
他们没有以某种方式申请,我真的不知道该怎么办。这是我的 table 的样子:
<div class="content-wrapper fullscreen-override">
<section class="content-header">
<H1>Users</H1>
</section>
<section class="content">
<div class="row col-lg-10 center">
<div class="box box-primary">
<p-dataTable [(value)]="users" selectionMode="single" [(selection)]="selectedUser" (onRowSelect)="onRowSelect($event)" rows="5" [paginator]="true" [pageLinks]="3" [rowsPerPageOptions]="[5,10,20]" [globalFilter]="gb" [responsive]="true">
<p-column field="email" header="email" [filter]="true" filterMatchMode="contains" [sortable]="true"></p-column>
<p-column field="first_name" header="first_name" [filter]="true" filterMatchMode="contains" [sortable]="true"></p-column>
<p-column field="last_name" header="last_name" [filter]="true" filterMatchMode="contains" [sortable]="true"></p-column>
<p-column field="is_superuser" header="is_superuser" [filter]="true" filterMatchMode="contains" [sortable]="true"></p-column>
<footer>
<div class="ui-helper-clearfix" style="width:100%">
<button type="button" pButton icon="fa-plus" style="float:left" (click)="showDialogToAdd()" label="Add"></button>
<button type="button" pButton icon="fa-pencil-square-o" style="float:left" (click)="showDialogToEdit()" [disabled]="selectedUser == null" label="Edit"></button>
<button type="button" pButton icon="fa-close" style="float:left" (click)="delete()" [disabled]="selectedUser == null" label="Delete"></button>
</div>
</footer>
</p-dataTable>
<p-dialog header="User details" [(visible)]="displayDialog" [responsive]="true" showEffect="fade" [modal]="true">
<div class="ui-grid ui-grid-responsive ui-fluid" *ngIf="displayableUser">
<div class="ui-grid-row">
<div class="ui-grid-col-4"><label for="email">email</label></div>
<div class="ui-grid-col-8"><input pInputText id="email" [(ngModel)]="displayableUser.email" /></div>
</div>
<div class="ui-grid-row">
<div class="ui-grid-col-4"><label for="name">first_name</label></div>
<div class="ui-grid-col-8"><input pInputText id="first_name" [(ngModel)]="displayableUser.first_name" /></div>
</div>
<div class="ui-grid-row">
<div class="ui-grid-col-4"><label for="surname">last_name</label></div>
<div class="ui-grid-col-8"><input pInputText id="last_name" [(ngModel)]="displayableUser.last_name" /></div>
</div>
<div class="ui-grid-row">
<div class="ui-grid-col-4"><label for="country">is_superuser</label></div>
<div class="ui-grid-col-8"><input pInputText id="is_superuser" [(ngModel)]="displayableUser.is_superuser" /></div>
</div>
</div>
<footer>
<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix">
<button type="button" pButton icon="fa-check" (click)="save()" label="Save"></button>
</div>
</footer>
</p-dialog>
</div>
</div>
</section>
</div>
以上是我的模板。
此外,我不太明白如何将我自己的 classes 应用到它们的元素上。
这是我的组件class(我也试过删除装饰器组件中的样式属性
import { Router } from '@angular/router';
import { Component, OnInit } from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';
import { UsersFormCreation } from './modal_forms/creation/users.forms.creation';
import {DataTable,
Column,
TabPanel,
TabView,
Header,
Footer,
Dialog,
Button,
InputText} from 'primeng/primeng';
import { RequestService } from '../../common/request.service';
import {User} from './user';
const template = require('./users.template.html');
const style = require('./style.css');
@Component({
selector: 'dashboardUsers',
template: template,
providers: [RequestService],
directives: [
ROUTER_DIRECTIVES,
DataTable,
Column,
TabPanel,
TabView,
Header,
Footer,
Dialog,
Button,
InputText]
styles: [style]
})
export class DashboardUsersComponent implements OnInit {
response: string;
api_path: string;
users: User[];
cols: any;
displayableUser: User = new DisplayableUser();
selectedUser: User;
displayDialog: boolean;
newUser: boolean;
count: number;
next: string;
previous: string;
constructor(public router: Router, public requestService: RequestService) {
this.api_path = 'http://127.0.0.1:8000/users/';
}
您需要关闭组件的封装。
基本概念是每个组件都对其他组件隐藏自己的样式,因此它们不会相互覆盖。您可以阅读有关封装的更多信息 here.
...
import { ..., ViewEncapsulation } from '@angular/core';
@Component {
...
encapsulation: ViewEncapsulation.None,
} ...
您是否在 index.html 中加入了 primeNG css 和主题之一?
<link rel="stylesheet" type="text/css" href="node_modules/primeui/themes/omega/theme.css" />
<link rel="stylesheet" type="text/css" href="node_modules/primeui/primeui-ng-all.min.css" />
看看这是否有帮助。
你的语法错误.
代替
<button type="button" pButton icon="fa-plus" style="float:left" (click)="showDialogToAdd()" label="Add"></button>
查看样式语法的变化
你应该使用
<button type="button" pButton icon="fa-plus" [style]="{'float':'left'}" (click)="showDialogToAdd()" label="Add"></button>
打开 style.css 文件并导入样式。
@import '../node_modules/primeng/resources/themes/omega/theme.css';
@import '../node_modules/primeng/resources/primeng.min.css';
我不会关闭 ViewEncapsulation,因为您的样式可能会溢出并可能导致应用程序的其余部分出现问题。
我建议使用 /deep/ 选择器在子组件树中强制使用样式。这可以在 Class 基础上应用 Class 或应用于多个 Class,如下所示。
单人Class
:host #{"/deep/"} .yourStyle1 {
color: #ffffff;
}
多个Classes
:host #{"/deep/"} {
.yourStyle1 { color: #ffffff; }
.yourStyle2 { color: #000000; }
}
更多信息:https://angular.io/docs/ts/latest/guide/component-styles.html
将必要的 CSS 文件添加到 .angular-cli.json
的 styles
部分:
"styles": [
"../node_modules/font-awesome/css/font-awesome.css",
"../node_modules/primeng/resources/primeng.min.css",
"../node_modules/primeng/resources/themes/omega/theme.css"
//...
],
另请参阅 PrimeNg Setup,部分 "Styles Configuration"。
对我来说最好的解决方案是将样式添加到 angular.json 文件中。不要忘记停止你的项目并在更改后再次服务:
"styles": [
"src/styles.scss",
"node_modules/primeng/resources/themes/saga-blue/theme.css",
"node_modules/primeng/resources/primeng.min.css"
],
你好,我刚开始使用 angular 2. 我找到了这个库 PrimeNG,我遵循了这个教程:
http://blog.davincisoftware.sk/primeng-web-component-framework-based-on-angularjs-2
这一切都有效,除了样式。
他们没有以某种方式申请,我真的不知道该怎么办。这是我的 table 的样子:
<div class="content-wrapper fullscreen-override">
<section class="content-header">
<H1>Users</H1>
</section>
<section class="content">
<div class="row col-lg-10 center">
<div class="box box-primary">
<p-dataTable [(value)]="users" selectionMode="single" [(selection)]="selectedUser" (onRowSelect)="onRowSelect($event)" rows="5" [paginator]="true" [pageLinks]="3" [rowsPerPageOptions]="[5,10,20]" [globalFilter]="gb" [responsive]="true">
<p-column field="email" header="email" [filter]="true" filterMatchMode="contains" [sortable]="true"></p-column>
<p-column field="first_name" header="first_name" [filter]="true" filterMatchMode="contains" [sortable]="true"></p-column>
<p-column field="last_name" header="last_name" [filter]="true" filterMatchMode="contains" [sortable]="true"></p-column>
<p-column field="is_superuser" header="is_superuser" [filter]="true" filterMatchMode="contains" [sortable]="true"></p-column>
<footer>
<div class="ui-helper-clearfix" style="width:100%">
<button type="button" pButton icon="fa-plus" style="float:left" (click)="showDialogToAdd()" label="Add"></button>
<button type="button" pButton icon="fa-pencil-square-o" style="float:left" (click)="showDialogToEdit()" [disabled]="selectedUser == null" label="Edit"></button>
<button type="button" pButton icon="fa-close" style="float:left" (click)="delete()" [disabled]="selectedUser == null" label="Delete"></button>
</div>
</footer>
</p-dataTable>
<p-dialog header="User details" [(visible)]="displayDialog" [responsive]="true" showEffect="fade" [modal]="true">
<div class="ui-grid ui-grid-responsive ui-fluid" *ngIf="displayableUser">
<div class="ui-grid-row">
<div class="ui-grid-col-4"><label for="email">email</label></div>
<div class="ui-grid-col-8"><input pInputText id="email" [(ngModel)]="displayableUser.email" /></div>
</div>
<div class="ui-grid-row">
<div class="ui-grid-col-4"><label for="name">first_name</label></div>
<div class="ui-grid-col-8"><input pInputText id="first_name" [(ngModel)]="displayableUser.first_name" /></div>
</div>
<div class="ui-grid-row">
<div class="ui-grid-col-4"><label for="surname">last_name</label></div>
<div class="ui-grid-col-8"><input pInputText id="last_name" [(ngModel)]="displayableUser.last_name" /></div>
</div>
<div class="ui-grid-row">
<div class="ui-grid-col-4"><label for="country">is_superuser</label></div>
<div class="ui-grid-col-8"><input pInputText id="is_superuser" [(ngModel)]="displayableUser.is_superuser" /></div>
</div>
</div>
<footer>
<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix">
<button type="button" pButton icon="fa-check" (click)="save()" label="Save"></button>
</div>
</footer>
</p-dialog>
</div>
</div>
</section>
</div>
以上是我的模板。
此外,我不太明白如何将我自己的 classes 应用到它们的元素上。
这是我的组件class(我也试过删除装饰器组件中的样式属性
import { Router } from '@angular/router';
import { Component, OnInit } from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';
import { UsersFormCreation } from './modal_forms/creation/users.forms.creation';
import {DataTable,
Column,
TabPanel,
TabView,
Header,
Footer,
Dialog,
Button,
InputText} from 'primeng/primeng';
import { RequestService } from '../../common/request.service';
import {User} from './user';
const template = require('./users.template.html');
const style = require('./style.css');
@Component({
selector: 'dashboardUsers',
template: template,
providers: [RequestService],
directives: [
ROUTER_DIRECTIVES,
DataTable,
Column,
TabPanel,
TabView,
Header,
Footer,
Dialog,
Button,
InputText]
styles: [style]
})
export class DashboardUsersComponent implements OnInit {
response: string;
api_path: string;
users: User[];
cols: any;
displayableUser: User = new DisplayableUser();
selectedUser: User;
displayDialog: boolean;
newUser: boolean;
count: number;
next: string;
previous: string;
constructor(public router: Router, public requestService: RequestService) {
this.api_path = 'http://127.0.0.1:8000/users/';
}
您需要关闭组件的封装。
基本概念是每个组件都对其他组件隐藏自己的样式,因此它们不会相互覆盖。您可以阅读有关封装的更多信息 here.
...
import { ..., ViewEncapsulation } from '@angular/core';
@Component {
...
encapsulation: ViewEncapsulation.None,
} ...
您是否在 index.html 中加入了 primeNG css 和主题之一?
<link rel="stylesheet" type="text/css" href="node_modules/primeui/themes/omega/theme.css" />
<link rel="stylesheet" type="text/css" href="node_modules/primeui/primeui-ng-all.min.css" />
看看这是否有帮助。
你的语法错误.
代替
<button type="button" pButton icon="fa-plus" style="float:left" (click)="showDialogToAdd()" label="Add"></button>
查看样式语法的变化
你应该使用
<button type="button" pButton icon="fa-plus" [style]="{'float':'left'}" (click)="showDialogToAdd()" label="Add"></button>
打开 style.css 文件并导入样式。
@import '../node_modules/primeng/resources/themes/omega/theme.css';
@import '../node_modules/primeng/resources/primeng.min.css';
我不会关闭 ViewEncapsulation,因为您的样式可能会溢出并可能导致应用程序的其余部分出现问题。
我建议使用 /deep/ 选择器在子组件树中强制使用样式。这可以在 Class 基础上应用 Class 或应用于多个 Class,如下所示。
单人Class
:host #{"/deep/"} .yourStyle1 {
color: #ffffff;
}
多个Classes
:host #{"/deep/"} {
.yourStyle1 { color: #ffffff; }
.yourStyle2 { color: #000000; }
}
更多信息:https://angular.io/docs/ts/latest/guide/component-styles.html
将必要的 CSS 文件添加到 .angular-cli.json
的 styles
部分:
"styles": [
"../node_modules/font-awesome/css/font-awesome.css",
"../node_modules/primeng/resources/primeng.min.css",
"../node_modules/primeng/resources/themes/omega/theme.css"
//...
],
另请参阅 PrimeNg Setup,部分 "Styles Configuration"。
对我来说最好的解决方案是将样式添加到 angular.json 文件中。不要忘记停止你的项目并在更改后再次服务:
"styles": [
"src/styles.scss",
"node_modules/primeng/resources/themes/saga-blue/theme.css",
"node_modules/primeng/resources/primeng.min.css"
],