2
私のapp.component.htmlファイルをいくつかの子コンポーネントの属性にアクセスさせるのに問題があります。私は他の例を見てきましたが、私のために働くものは何も得ていませんでした。私は最新の2.0.0バージョンを使用しています。ここに私のコードのいくつかを見ては、次のとおりです。ルータのコンセントが吐き出すます角2:コンポーネント間で属性を共有する
<div class="sub-nav-dropdown">
<div class="dropdown-toggle sub-nav-dropdown-button" type="button" data-toggle="dropdown">
{{subnav}}
<i class="fa fa-sort-desc"></i>
</div>
<ul class="dropdown-menu sub-nav-options" id="growSellNav">
<li>
<a routerLink="/Plan/Production/Selling" routerLinkActive="active" id="selling" class="">Selling</a>
</li>
<li>
<a routerLink="/Plan/Production/Growing" routerLinkActive="active" id="growing" class="">Growing</a>
</li>
</ul>
</div>
<router-outlet></router-outlet>
:
app.component.ts
import { Component } from '@angular/core';
import { SellingComponent } from './selling.component';
import { GrowingComponent } from './growing.component';
@Component({
selector: 'my-app',
templateUrl: 'Areas/Plan/app/app.component.html',
styleUrls: ['Areas/Plan/app/app.component.css']
})
export class AppComponent {
}
app.component.html HTMLをgrowing.component.htmlとselling.component.htmlから選択します。 growing.component.tsとselling.component.tsでは、私は{{subnav}}
がapp.component.htmlファイルにあるところに表示されるsubnav
属性を持っていますが、動作させることはできません。ここでは、これらの他のコンポーネントからコードされています
export class GrowingComponent implements OnInit {
public subnav = 'Growing';
ngOnInit(): void {
console.log('initializing GrowingComponent');
}
}
export class SellingComponent implements OnInit {
public subnav = 'selling';
ngOnInit(): void {
console.log('initializing SellingComponent');
}
}
入れ 'subnav'。 [observablesを使う](https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service)、またはサービス内のオブジェクトの中に 'subnav'を入れます。例えば' mySharedObj = {subnav:value}; ' - 次に、AppComponentのthis.sharedObj = MyService.getSharedObj();でオブジェクトへの参照を取得し、ビュー内で' {{sharedObj.subnav}} 'を使用します。 –
getSharedObj()は作成する必要がある関数ですか、それを使用できるように何かをインポートする必要がありますか? – Brett
あなたのサービスで作成する方法です。 3つのコンポーネントすべてにサービスをインポートし、それを3つのコンポーネントコンストラクタすべてに注入する必要があります。次に、サービス上でパブリックメソッドを呼び出すことができます。 –