2017-08-18 42 views
1

我不知道如何爲組件中的ngOnInit中的host {}設置css樣式。 可以使用Renderer來設置?Angular設置css樣式爲:ngOnInit中的主機

實施例:APP-組件的主機中時由ngFor渲染:

<app-a *ngFor ="let a in alist" [a] = "a"></app-a> 

在ngOnInit APP-A I想由百分之設定寬度高度風格?

我可以做到嗎?

很多謝謝。

+0

請提供您當前場景的一些代碼示例,因爲這可以通過多種方式實現 –

+0

通常您不會強制設置樣式。將樣式添加到'@Component({styles:[...],styleUrls:[...]})''。您可以在'ngOnInit()'中設置/刪除類或屬性,根據這些類或屬性使樣式的不同部分適用。 –

回答

1

你通常在組件裝飾設置樣式聲明方式:

@Component({ 
    styles: [':host { display: block; }'] 
}); 
export class AppComponent {} 

但如果你真的需要做的是從ngOnInit,可以插入主機元素,並使用渲染:

export class AppComponent { 
    constructor(private host: ElementRef, private renderer: Renderer2) { } 

    ngOnInit() { 
    this.renderer.setStyle(this.host.nativeElement, 'display', 'block'); 
    } 
+0

感謝您的幫助,先生:)。 – BaoBao

+0

@寶寶,不客氣) –

2

您還可以使用@HostBinding裝飾,如:

import { Component, HostBinding } from '@angular/core'; 

@Component({ 
    selector: 'my-app', 
    templateUrl: `./app.component.html` 
}) 
export class AppComponent { 
    @HostBinding('style.display') display: string; 
    @HostBinding('style.width.%') width: number; 
    @HostBinding('style.height.px') height: number; 

    ngOnInit() { 
    this.display = 'block'; 
    this.width = 50; 
    this.height = 500; 
    } 
} 
+0

謝謝你的幫忙先生:)。 – BaoBao