Angular Material md-icon 错误没有 Http 提供程序

jbo*_*the 6 angular-material angular

使用时<md-icon>出现此错误:

原始异常:没有 Http 提供者!

所以我添加HTTP_PROVIDERS到我的组件中并解决了这个问题。所以我的问题...为什么我需要添加HTTP_PROVIDERS到我的组件才能开始<md-icon>工作,即使我没有HTTP_PROVIDERS在我的应用程序中使用?

这是我的工作组件。从提供者数组中删除HTTP_PROVIDERS会引发上述错误。

import { Component } from '@angular/core';
import { HTTP_PROVIDERS } from '@angular/http';
import { MdIcon, MdIconRegistry } from '@angular2-material/icon';

@Component({
  moduleId: module.id,
  selector: 'foo-app',
  template: `<md-icon>face</md-icon>`,
  directives: [ MdIcon ],
  providers: [MdIconRegistry, HTTP_PROVIDERS]
})
export class FooAppComponent {
  title = 'Material 2 Foo App';
}
Run Code Online (Sandbox Code Playgroud)

另请注意,这一行将显示没有 Http 错误且不需要的图标HTTP_PROVIDERS

<i class="material-icons">face</i>
Run Code Online (Sandbox Code Playgroud)

Tuc*_*ker 3

查看一下 Angular2-Material 的源代码,md-icon 取决于 Angular2,Http这就是您看到需要 HTTP_PROVIDERS 的原因。

这是来源的链接: https ://github.com/angular/material2/blob/master/src/components/icon/icon.ts

在 /src/components/icon/icon.ts 中,该类需要MdIconRegistry具有MdIcon构造函数:

constructor(
  private _element: ElementRef,
  private _renderer: Renderer,
  private _mdIconRegistry: MdIconRegistry) { }
Run Code Online (Sandbox Code Playgroud)

MdIconRegistry要求Http具有MdIconRegistry构造函数:

  constructor(private _http: Http) {}
Run Code Online (Sandbox Code Playgroud)

我猜 Http 可能是用来从 url 获取图标的?因此,如果您深入研究源代码几层,您可以在那里找到 Http。