2016-07-12 31 views
6

Ciao ho appena iniziato a lavorare con angular 2. Ho trovato questa libreria PrimeNG, ho seguito questo tutorial: http://blog.davincisoftware.sk/primeng-web-component-framework-based-on-angularjs-2 Funziona tutto, tranne gli stili. Non stanno applicando in qualche modo e davvero non so cosa fare. ecco quello che la mia tabella assomiglia: primeNG datatablestili primari non applicati angolari2

<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> 

è al di sopra il mio modello.

Inoltre, non capisco come applicare le mie classi sui loro elementi.

Questa è la mia classe di componenti (Io ho anche provato a rimuovere l'attributo stili dall'arredatore Componente

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/'; 

    } 
+0

Ho spostato i miei file css dalla directory node_modules/primeui a un contenitore pubblico e alcuni stili applicati. Ho fatto un chmod 777 sulla cartella ma non ha funzionato molto Per qualche ragione i miei stili (stili di primeui) non vengono caricati. –

risposta

18

È necessario spegnere l'incapsulamento per il componente.

Il concetto di base è che ogni componente nasconde è stili da un altro componente in modo che non si sovrascrivono. si può leggere di più su incapsulamento here.

... 
import { ..., ViewEncapsulation } from '@angular/core'; 

@Component { 
    ... 
    encapsulation: ViewEncapsulation.None, 
} ... 
+0

Non ha funzionato, questo è il flusso corrente della mia app app.ts-> dashboard.ts-> dashboard.users-> Ho anche provato ad aggiungere ViewEncapsulation al componente dashboard.ts, non ha aiutato –

+0

Ha funzionato per io, cercavo di impostare il contenuto di .ui-datagrid per http://www.primefaces.org/primeng/#/datagrid e non ha funzionato –

+0

risposta eccellente – naoru

6

ha hai incluso primeNG css e uno dei temi nel tuo index.html?

<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" /> 

Vedere se questo aiuta.

+0

Questo è quello che ho finito per fare, penso che ci sia ancora un modo migliore –

+0

Questo è menzionato nella loro pagina di configurazione - http://www.primefaces.org/primeng/#/setup (Cerca sezione Dipendenze) – Sanket

+1

Il riferimento può sono cambiati da quando è stata offerta questa soluzione, ma per PrimeNg 4.1.0 la struttura delle directory e la denominazione per me richiedevano che li riferimento come: "primeng/resources/themes/omega/theme.css" "primeng/resources/primeng.min .css " – tengen

-2

la sintassi è errata.

Al posto di

<button type="button" pButton icon="fa-plus" style="float:left" (click)="showDialogToAdd()" label="Add"></button> 

vedere il cambiamento nella sintassi stile

si dovrebbe usare

<button type="button" pButton icon="fa-plus" [style]="{'float':'left'}" (click)="showDialogToAdd()" label="Add"></button> 
+0

è un attributo html ... perché non funziona? – khaled4vokalz

3

Aprire il file style.css e importare gli stili.

@import '../node_modules/primeng/resources/themes/omega/theme.css'; 
@import '../node_modules/primeng/resources/primeng.min.css'; 
4

non vorrei spegnere ViewEncapsulation come vostri stili potrebbero sanguinare fuori e potenzialmente causare problemi nel resto della vostra applicazione.

Si consiglia di utilizzare/deep/selector per forzare uno stile verso il basso attraverso l'albero dei componenti figlio. Questo può essere applicato su una base di Classe per Classe o su più Classi, come di seguito.

una singola classe

:host #{"/deep/"} .yourStyle1 { 
    color: #ffffff; 
} 

più classi

:host #{"/deep/"} { 

    .yourStyle1 { color: #ffffff; } 

    .yourStyle2 { color: #000000; } 
} 

maggiori informazioni: https://angular.io/docs/ts/latest/guide/component-styles.html

+0

Bello! Ho salvato la mia giornata. – jackal

1

aggiungere i file CSS necessari alla sezione styles del .angular-cli.json:

"styles": [ 
    "../node_modules/font-awesome/css/font-awesome.css", 
    "../node_modules/primeng/resources/primeng.min.css", 
    "../node_modules/primeng/resources/themes/omega/theme.css" 
    //... 
], 

Vedere anche PrimeNg Setup, sezione "Configurazione degli stili".