我试图弄清楚为什么不能从自己的组件的控制器中找到.component()
具有指令的 Angular。<md-sidenav>
Angular 抛出以下错误:
找不到句柄菜单的实例
整个组件是:
function controller($mdSidenav) {
$mdSidenav("menu").open();
}
controller.$inject = ["$mdSidenav"];
components.component("sideAppMenu", {
controller: controller,
controllerAs: "model",
templateUrl: "path/to/template"
});
...它的模板是:
<md-sidenav class="md-sidenav-left md-whiteframe-z2" md-component-id="menu">
hello world
</md-sidenav>
如果我将整个移动<md-sidenav>
到我的index.html
(即在任何指令/组件之外),$mdSidenav
可以找到整个 Angular Material 组件。
这里出了什么问题?我错过了一些细节吗?
我可以确认整个组件都已渲染。即模板定位注入成功。
更新
我可以弄清楚问题出在哪里:它与组件生命周期有关。如果我$timeout
在到达控制器代码后尝试访问所谓的 Angular Material 组件,$mdSidenav
可以找到该组件:
function controller($mdSidenav, $timeout) {
$timeout(function() {
// OK!!!!!!!!
$mdSidenav("menu").open();
debugger;
},3000);
}
controller.$inject = ["$mdSidenav", "$timeout"];
如果问题是何时访问组件,如果是在初始化控制器时,我应该何时尝试访问 Angular Material 组件?