2017-08-30 5 views
0

答えで基本クラスのインスタンスを取得することはできません。角度2 - ViewChildもContentChild

  • いけない使用EXPORTAS

  • 使用@ViewChild( 'myContent')myContent。これは相続に関するngAfterViewInit


使うので、より良い、親クラス

  • ビューが初期化されている場合にのみ動作するのインスタンスを取得します!

    base class (component) 
        | 
    inherited class (component) 
    

    私は継承クラスコンポーネントが継承に独自のテンプレート

    <my-content #myContent> 
        ... 
    

    に基本クラステンプレート への参照を使用し

    @Component({ 
        selector: 'my-content', 
        exportAs: 'myContent', 
        ... 
    }) 
    

    EXPORTASでエクスポート基本クラスの成分を有しますコンポーネントのコードそのインスタンスを取得しようとしました

    @ViewChild('myContent') myContent; 
    

    または

    @ContentChild('myContent') myContent; 
    

    いくつかは、これは動作するはずと言うが、myContentはどのように私はこれを解決するのです

    なかれ定義されていませんか?あなたがそう

    MyComponentClassはのエクスポートされた名前である
    @ViewChild(MyComponentClass) myContent; 
    

    のように、すべての参照せずに、直接、Componentクラスを使用することができ、親テンプレート内の子コンポーネントのインスタンスを取得するには

    おかげ

  • +0

    を再現することはできますか? –

    答えて

    1

    子コンポーネントクラス。サイドノートとして

    、ビューがチェックされた後/初期化(ngAfterViewInitを使用して)ではなくngOnInitに、初期化段階で、子コンポーネントがまだ作成されていませんので、あなたがmyComponent変数をreferenceingしていることを確認してください。

    https://plnkr.co/edit/Q53I4EIDOL0ZrUEo2jRN?p=preview

    +0

    それは逆ですが、私は子の親関数を呼び出したい – ninja

    +0

    ngOnInitの代わりにngAfterViewInitを試しましたが、まだ未定義の参照 – ninja

    +0

    https://plnkr.co/edit/jjN9An8G2QKzqFqk3dnp?p=preview – ninja

    0

    @ViewChild(MyParentComponent) myParent: MyParentComponent

    することができますインスタンスthis.myParentのような親コンポーネント

    plunker:ここ

    は作業plunkrだあなたはPlunkerに

    import { Component, ViewChild } from '@angular/core'; 
    
    @Component({...}) 
    
    export class InheritedComponent extends BaseClassComponent { 
    
        @ViewChild(BaseClassComponent) myBaseclass: BaseClassComponent; 
    
        doSomeOperations() 
        { 
         this.myBaseclass.toggle(); 
         console.log(this.visible); 
        } 
    
    } 
    
    +0

    なぜmyChild変数を呼び出すのですか?それはmyParentまたは何かする必要があります。私はあなたの解決策を試して、それは動作しません – ninja

    +0

    まだ未定義の参照? – k11k2

    +0

    https://plnkr.co/edit/jjN9An8G2QKzqFqk3dnp?p=preview – ninja

    関連する問題