试图找出切换$mdSidenav
时出错的原因。这不是一个突破性错误,因为代码运行应该,但我觉得我可能在打字稿中错误地实现它。
我添加了明确的类型和角度材质,使用简单的控制器,如此
module app.layout {
interface IMenuModel {
menuItems: app.layout.IMenuItems[];
toggleSidenav(menuId: string): void;
}
class MenuCtrl implements IMenuModel {
menuItems: app.layout.IMenuItems[];
constructor(private $mdSidenav: ng.material.ISidenavObject) {
var vm = this;
}
toggleSidenav(menuId: string): void {
this.$mdSidenav(menuId).toggle();
console.log(menuId);
}
}
angular.module("app").controller("menuCtrl", MenuCtrl);
}
代码的核心编译为
MenuCtrl.prototype.toggleSidenav = function (menuId) {
this.$mdSidenav(menuId).toggle();
console.log(menuId);
};
html是
<md-button ng-click="vm.toggleSidenav('left')" hide-gt-sm class="md-icon-button">
menu
</md-button>
所以这在浏览器中有效,菜单会切换。但是,IDE中有一个错误说明
我觉得我没有实现这个&#34;打字稿&#34;如果你愿意的话。明确键入的ng.material.ISidenavObject
看起来像这样
interface ISidenavObject {
toggle(): angular.IPromise<void>;
open(): angular.IPromise<void>;
close(): angular.IPromise<void>;
isOpen(): boolean;
isLockedOpen(): boolean;
}
答案 0 :(得分:3)
只需更改
constructor(private $mdSidenav: ng.material.ISidenavObject) {
到
constructor(private $mdSidenav: ng.material.ISidenavService) {
您可以看到相应的definition。