收到错误:未确认的提供程序:$urlMatcherFactory

Getting Error: Unkown provider: $urlMatcherFactory

本文关键字:程序 urlMatcherFactory 确认 错误      更新时间:2023-09-26
Unkown provider: $urlMatcherFactory 

这是我尝试在应用程序配置中注入$urlMatcherFactory时 Angular 抛出的错误消息。

我已经包含了ui路由器JS文件,并且在过去的几个月里一直在使用它。

我需要做这样的事情:

var dateMatcher = $urlMatcherFactory.compile("/day/{start:date}");
$stateProvider.state('calendar.day', {
    url: dateMatcher 
});

如此示例所示。

通常这样的代码不会识别$urlMatcherFactory。所以我尝试将其注入为对配置的依赖项,但随后出现此错误。

在这个问答匹配 url 和 AngularJS ui-router 中的数组单词列表中,您可以看到如何使用$urlMatcherFactory。也是工作 plunker 的链接.

在该示例中,$urlMatcherFactory用于.run()

  .run(['$urlMatcherFactory',
    function($urlMatcherFactory) {
      
      var sourceList= ['John', 'Paul', 'George', 'Ringo']
      var names = sourceList.join('|');
      var urlMatcher = $urlMatcherFactory.compile("/{source:(?:" + names + ")}/:id");
      
      $stateProviderRef 
        .state('names', { 
          url: urlMatcher,
          templateUrl: 'tpl.root.html',
          controller: 'MyCtrl'
        });
    }
  ]);

这也意味着,如果你打算在配置阶段使用它,你应该要求 $urlMatcherFactoryProvider(请参阅末尾的提供程序

但是:在配置阶段使用提供程序意味着 - 我们可以配置它们。我的意思是配置提供程序本身。稍后在运行阶段可评估(已配置)

配置提供程序

您可能想知道,如果工厂、值等如此容易,为什么有人会费心使用 offer 方法建立一个成熟的提供商。答案是提供程序允许大量配置。我们已经提到过,当您通过提供程序(或 Angular 为您提供的任何快捷方式)创建服务时,您将创建一个新的提供程序来定义该服务的构造方式。我没有提到的是,这些提供程序可以注入到应用程序的配置部分中,以便您可以与它们进行交互!

首先,Angular 分两个阶段运行您的应用程序 - 配置和运行阶段。正如我们所看到的,在配置阶段,您可以根据需要设置任何提供程序。这也是设置指令、控制器、过滤器等的地方。正如您可能猜到的那样,运行阶段是 Angular 实际编译您的 DOM 并启动您的应用程序的地方。