3

我在shlomiassaf/angular2-modal中自定义了 customModal.ts 的模态。具体来说,我添加了一个包含 ngModel 的输入,它导入了 FORM_DIRECTIVES 和指令。

运行“没有渲染器提供程序!(NgModel -> Token NgValueAccessor -> DefaultValueAccessor -> Renderer)'

请帮我解决这个问题。谢谢。

4

2 回答 2

1

我看到两种可能性:

  • 未在组件或应用程序级别指定相应的提供程序。我不认为是这个问题,因为我已经注入了 aRenderer而没有在其providers属性或函数的第二个参数中指定它bootstrap

    像这样的东西:

    import {Component,Renderer,ElementRef} from 'angular2/core';

    @Component({
      selector: 'child',
      template: '<div></div>',
    })
    export class ChildComponent {
      constructor(private _renderer: Renderer,
               private el: ElementRef) {
        (...)
      }
    }
  • 我认为这可能是因为注入渲染器的类没有被修饰,因此无法应用依赖注入。正如此评论中所强调的,您需要拥有它才能进行注入。Injectable不是为了注入某物,而是为了注入自身。

编辑

查看您的代码后,您似乎需要将渲染器添加到您提供给该loadNextToLocation方法的提供程序列表中。您可以DialogService#open像这样更新方法的代码:

var otherResolved = Injector.resolve([
  provide(DialogRef, { useValue: dialogRef})
  provide(Renderer, { useValue: this.renderer})
]);

希望它可以帮助你,蒂埃里

于 2016-01-05T10:36:24.340 回答
0

您可能需要添加组件装饰器

@Component({
  providers: [Renderer],
  ...
)}
于 2016-01-05T09:44:42.737 回答