【发布时间】:2016-04-23 10:37:49
【问题描述】:
要么我没有得到模式,要么我的设计有误。
使用 angular2-beta0,打字稿
基本上我已经设置了一个非常基本的应用程序,它带有一个根组件,一个控制主视图的路由器,然后在某些页面上我有一个子路由器来控制该组件上的子视图。
我似乎在苦苦挣扎的是如何通过组件之间的通信来构建事物。就目前的应用程序而言,它的排列方式对我来说是合乎逻辑的,主路由的视图没有任何共同点,在子路由视图中它们都共享相同的侧导航和标题。我遇到的问题似乎是与子视图的父视图通信。似乎是一个孩子在路由器插座中,它无法获得父组件的依赖关系。我查看了自定义事件,但这些似乎只有在绑定到模板时才有效。唯一的其他选择似乎是服务,但对我来说似乎很糟糕,因为理想情况下,我希望父组件能够控制子组件的状态。
任何示例代码...
@Component({
selector: 'app'
})
@View({
template: '<router-outlet></router-outlet>',
directives: [ROUTER_DIRECTIVES]
})
@RouteConfig([
{ path: '/', as: 'Login', component: LoginForm },
{ path: '/main/...', as: 'Main', component: Main}
])
class App {
constructor(private _router: Router) {
}
}
bootstrap(App, [ROUTER_PROVIDERS, provide(APP_BASE_HREF, { useValue: '/' })]);
@Component({
selector: 'main'
})
@View({
templateUrl: '/client/main/main.html',
directives: [ROUTER_DIRECTIVES, NgClass, Menu, Main]
})
@RouteConfig([
{ path: '/', as: 'Clear', component: StateClear },
{ path: '/offer', as: 'Offer', component: StateOffer }
])
export class Main {
constructor(private _router: Router) {
}
}
@Component({
selector: 'state-clear'
})
@View({
templateUrl: '/client/bookings/state-clear.html'
})
export class StateClear {
constructor(main: Main) {
}
}
我遇到的 DI 错误是这样的......
异常:无法解析 StateClear(未定义)的所有参数。确保它们都有有效的类型或注释。
事件没有错误,因为我看不到如何在模板之外监听。
【问题讨论】:
-
您能否在问题中提供
StateClear组件的内容,主要是构造函数?谢谢! -
State clear 在 main 下,只是将 main 传递给构造函数。我最初的想法是传入 main 将允许我调用 main 上的公共方法以及访问公共属性以控制整个部分的状态,但是看起来通过路由的 DI 无法按预期工作。
标签: typescript angular