You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS(v1.5.5)结合Angular-material(1.1.8)实现Tabs遇依赖注入错误

解决AngularJS + Angular Material Tabs的依赖注入错误

你遇到的[$injector:unpr]错误,本质是AngularJS的依赖注入系统找不到$mdUtil服务导致的——这个服务是Angular Material内部支撑布局、主题等核心功能的基础服务,出现这类问题通常和资源加载、模块配置有关,下面是具体的排查和解决步骤:

  • 确认脚本加载顺序与依赖完整性
    Angular Material依赖AngularJS、Angular Animate和Angular Aria三个核心库,必须按正确顺序加载:

    1. 先加载AngularJS(v1.5.5)
    2. 接着加载同版本的Angular Animate和Angular Aria
    3. 最后加载Angular Material(v1.1.8)
      同时别忘了引入Angular Material的CSS文件,缺失样式文件不仅会导致界面异常,还可能影响部分内部逻辑的运行。
  • 检查应用模块的依赖配置
    你的AngularJS应用模块必须明确声明依赖ngMaterial,否则Angular无法识别Material的指令和服务。示例代码如下:

    angular.module('tabsDemoApp', ['ngMaterial'])
      .controller('DemoCtrl', function($scope) {
        // 你的控制器逻辑
      });
    

    如果模块未声明ngMaterial依赖,Material的内部服务(比如$mdUtil)不会被注册,自然会抛出"找不到提供者"的错误。

  • 验证版本兼容性
    Angular Material 1.1.8官方兼容的AngularJS版本是1.5.x到1.6.x,你使用的1.5.5符合要求,但要确保Angular Animate和Angular Aria的版本与AngularJS保持一致,避免因版本不匹配引发依赖冲突。

  • 排查布局指令的使用场景
    错误栈中提到的layoutDirective对应你代码里的layout="column"指令,这个指令属于Angular Material的布局系统,只有当ngMaterial模块正确加载后才能正常工作。如果前面的步骤都没问题,建议检查代码中是否存在拼写错误,比如layout指令的属性名是否正确、有没有漏写或写错。

针对你提供的代码片段,还要确认<md-tabs>相关指令是否都归属到依赖了ngMaterial的模块下,比如控制器是否属于正确的模块范围。

内容的提问来源于stack exchange,提问作者Micky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:23:37