此问题特定于Angular 2。
我需要调用我的一个服务,给一些对象发送内容,并通过注入将它们传递给子控件(我不想为此目的使用绑定)。我怎么做? 在下面的代码中(不起作用)我调用blogService来获取CurrentSite对象。我需要将CurrentSite传递给NavBar组件,该组件包含在指令属性中 AppComponent。
@Component({
selector: 'my-app',
templateUrl: './app/app.html',
directives: [NavBar, ROUTER_DIRECTIVES],
providers: [HTTP_PROVIDERS, ROUTER_PROVIDERS, BlogService, provide(CurrentSite, { useExisting: this.CurrentSite })]
})
@Routes([
{ path: '/', component: Home },
{ path: '/Contact', component: Contact },
{ path: '/Blog', component: BlogIndex }
])
export class AppComponent implements OnInit {
public CurrentSite: CurrentSite;
constructor(private blogService: BlogService) {
}
ngOnInit()
{
this.SetCurrentSite();
}
SetCurrentSite()
{
this.blogService.GetActiveSites().subscribe(data => {
let site = data.find(x => x.SiteName === "SamsBlog");
if (site === null)
throw new Error("Site SamsBlog was not found");
this.CurrentSite = new CurrentSite();
this.CurrentSite.ID = site.ID;
this.CurrentSite.SiteName = site.SiteName;
});
}
}
答案 0 :(得分:0)
您可以创建一个通过DI传递给AppComponent和NavBar的SessionService。
AppComponent检索到CurrentSite后,会在SessionService中存储CurrentSite。然后,NavBar将能够访问CurrentSite,只需查询SessionService。
我希望这会有所帮助