mdSidenav服务可以'当一个组件's在Angular组件内部
mdSidenav service can't find a component when it's inside an Angular component
我正试图弄清楚为什么具有<md-sidenav>
指令的Angular .component()
无法从自己的组件控制器中找到。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
可以定位整个角度材质组件。
这里出了什么问题?我是不是遗漏了一些细节?
我可以确认整个组件已渲染。也就是说,模板被定位并成功注入。
更新
我可以弄清楚问题出在哪里:这是关于组件生命周期的。如果在达到控制器代码一段时间后,我使用$timeout
尝试访问所谓的角材料组件,$mdSidenav
可以定位该组件:
function controller($mdSidenav, $timeout) {
$timeout(function() {
// OK!!!!!!!!
$mdSidenav("menu").open();
debugger;
},3000);
}
controller.$inject = ["$mdSidenav", "$timeout"];
如果问题是何时访问组件,如果是在初始化控制器时,我应该何时尝试访问角材料组件?
我可以使用md-is-locked-open
<md-sidenav>
指令/组件属性来解决我的问题。
由于我只是想锁定整个应用程序生命周期打开的菜单,这对我来说很好。
我怀疑Angular Material开发人员没有涵盖我的用例,而是在视图已经加载并执行click
或任何事件后需要服务的情况。。。
顺便说一句,我会留下这个问答;对新答案持开放态度,这样我们就可以理解为什么我的场景不起作用。。。
相关文章:
- 使用react.js渲染其他组件内部的组件
- 使用jquery在react组件内部设置样式可以吗
- 访问Vuejs组件内部的元素
- 测试React组件内部的fetch()方法
- react-将图标添加到组件内部的标题中
- 从自定义组件内部查找 Ember
- 如何获取 Ember 组件对象内部承诺成功或错误回调
- 反应.js如何在组件内部渲染组件
- 显示/隐藏 ReactJS 组件而不会丢失其内部状态
- 如何在 Web 组件中设置标签的内部文本
- mdSidenav服务可以'当一个组件's在Angular组件内部
- React Native appending Text组件位于另一个Text组件内部
- 如何获得聚合物组件内部元素的实际事件锁定目标
- 如何调用Meteor.在客户端的react组件内部调用
- React原生路由器flux:覆盖组件内部的左键或右键,并访问本地功能
- 从组件内部访问其他组件引用
- 在组件内部定义样式,但不要内联
- 当组件'子组件内部发生变化时,修改组件'的视图
- 访问子组件是指从父组件内部访问子组件
- 从组件内部设置控制器属性