2017-09-29 4 views

Antwort

1

Richtlinien können die Lösung Ihres Problems sein.

src/app/width.directive.ts

import { Directive, ElementRef, Input } from '@angular/core'; 

@Directive({ selector: '[width]' }) 
export class widthDirective { 

    @Input() 
    set width(width: number) { 
     this.el.nativeElement.style.width = `${this._width}px`; 
    } 

    constructor(el: ElementRef) {} 
} 

Dann in jeder Komponente, die Sie verwenden können:

<div class="page home-page" width [width]="500"> 

Wenn Sie Ihre Richtlinien zugänglich machen wollen, überall können Sie this answer folgen.

+0

Wie kann ich das tun? calc (100% - 200px)? – Joseph

+0

Sie können Ihre 'calc' Funktion innerhalb des' WidthDirective' und tun so etwas wie '@Input() Schränkungsweite bewegen (Breite: Zahl) { this.el.nativeElement.style.width = \' $ {this.calc (100% - Breite)} px \ '; } 'es hängt' calc() 'Rückgabewert, können Sie mir die Funktion zeigen? – Lilrom

1

Alle Stile (außer dem Haupt globalen Sheet) in Angular 2/4 sind gekapselt, so dass, wenn Sie Stylesheets wie dies zB:

@Component({ 
    selector: 'component-name', 
    templateUrl: './component.html', 
    styleUrls: ['./component.css'] 
}) 

Alle Stile von component.css werden NUR auf component.html angewendet werden (wenn Sie verwenden keine Dinge wie /deep/ und das gleiche). Sie können also die Breite des aktuellen Layouts ändern, dies wirkt sich nicht auf andere Layouts aus!

+0

Allerdings ist meine div class = "Seite Homepage" auf andere Komponente gefunden. Wie kann man die div class = "page home-page" auf der Login-Komponente aufrufen und ihre Breite auf das einstellen, was Sie wollen? – Joseph

+0

@Joseph, wenn es sich in einer anderen Komponente befindet, können Sie von der aktuellen Datei 'component.css' nicht darauf zugreifen. Sie können globale Stile in der Datei 'styles.css' schreiben (sie befindet sich irgendwo in der Nähe des Projektstamms). –

+0

@Kommerzieller Selbstmord. Ja, ich habe das Design der Seite div class = "page home" auf der styles.css angewendet und möchte die Breite nur in der login.component ändern. Nur auf der login.component und nicht auf andere Komponente – Joseph

Verwandte Themen