2016-09-20 73 views
0

我有2成分 - A,B 並從變化B的class.for例如改變要NG-有效到NG-無效角2-變化類到另一個

<A #a></A > <B> </B>

從BI希望將類給A,或將A的ng有效類更改爲ng無效。

+1

你能告訴我們稍微多一點? –

+0

嗨,我更新了問題。 – emanuel07

回答

1

看到這個plunker得到的如何做到這一點的想法:https://plnkr.co/edit/wz771Lnnn3GjHWFmykGl?p=preview

當你評論,你可以使用一個@Input以訪問該組件..

import {Component, NgModule, Input, ElementRef} from '@angular/core' 
import {BrowserModule} from '@angular/platform-browser' 

@Component({ 
    selector: 'AComp', 
    template: 'a-component', 
    styles: [ 
    ':host(.ng-valid) { color: green; font-weight: bold; }', 
    ':host(.ng-invalid) { color: red; font-weight: bold; }' 
    ] 
}) 
export class AComp { 

    constructor(private _eRef: ElementRef) {} 

    public addClass(c: string) { 
    console.dir(this._eRef); 
    this._eRef.nativeElement.classList.add(c); 
    } 

    public removeClass(c: string) { 
    this._eRef.nativeElement.classList.remove(c); 
    } 

} 

@Component({ 
    selector: 'BComp', 
    template: 'b-component' 
}) 
export class BComp { 

    @Input('a-comp') private _aComp: AComp; 

    constructor() { } 

    ngOnInit() { 
    this._aComp.addClass('ng-valid') 
    setTimeout(() => this._aComp.addClass('ng-invalid'), 1000); 
    setTimeout(() => this._aComp.removeClass('ng-invalid'), 3000); 
    } 
} 

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div> 
     <h2>Hello {{name}}</h2> 
     <AComp #acmp></AComp> 
     <br /> 
     <BComp [a-comp]="acmp"></BComp> 
    </div> 
    `, 
}) 
export class App { 
    constructor() { 
    this.name = 'Angular2' 
    } 
} 

@NgModule({ 
    imports: [ BrowserModule ], 
    declarations: [ App, AComp, BComp ], 
    bootstrap: [ App ] 
}) 
export class AppModule {} 
+0

謝謝你的回答,一個問題 - 你正在改變BComp -' [class.anyClassNameHere] =「acmp.booleanValueToTriggerAClass」'中的BComp類。 我想從AComp訪問BComp類,並從AComp改變它的類。是否有可能? – emanuel07

+0

已更新。它適合更好嗎? – mxii

+0

謝謝親愛的@ mxii,它的作品。對我的情況更好。 和最後一個問題,我們可以在BComp所有邏輯的舉動,即 '[class.ng-有效] = 「bcmp.booleanValueToTriggerAClass」 [class.ng-無效] = 「!bcmp.booleanValueToTriggerAClass」' 不要在acomp中寫,Acomp將作爲輸入傳遞給BComp,並在BComp中更改AComp類。 – emanuel07