0

プロバイダーに問題があります。コンポーネントに新しいカスタム プロバイダをインポートしようとしましたが、機能しません。この 2 番目のプロバイダーは、私が作成した最初のプロバイダーに基づいており、うまく機能します...

これは私のプロバイダーです:

import { Injectable} from "@angular/core";
import { Router, Routes } from '@angular/router';

import ... // All components needed

@Injectable()
export class RoutesHelper {

  private userRoutes: Routes = [
      { path: '' , component: HeaderComponent, outlet: 'header' },
      ...
    ];


  constructor(
    private router:Router
    ) {}

    public load() {
      this.router.resetConfig(this.userRoutes);
    }
}

そして、これが私の「QuestionComponent」です

import { Component, OnInit } from '@angular/core';
import { RoutesHelper } from '../_utils/routes.helper';

@Component({
  selector: 'questions-list',
  templateUrl: './app/question/questions.component.html',
  providers: [RoutesHelper]
})

export class QuestionsComponent implements OnInit {

  constructor(private routes:RoutesHelper) {}

  ngOnInit() {
    this.routes.load();
  }
}

しかし、私はこのエラーを持っています:「QuestionsComponent」の無効なプロバイダ - Provider と Type のインスタンスのみが許可されています。[?undefined?]

「未定義」オブジェクトを取得した理由も、このエラーもありません。

ご協力いただきありがとうございます。

4

2 に答える 2

0

わかりました問題は解決しました。

コンポーネントにインポートされたプロバイダーのコンポーネントのインポートによる最後のエラーを回避するため(再帰インポート)。私はこれを使用しました:

var userRoutes: Routes = [
    { path: '' , component: LeftComponent, outlet: 'left' },
    { path: '' , component: EmptyComponent, outlet: 'footer' },
    { path: '' , component: HeaderComponent, outlet: 'header' }
];

var all = userRoutes.concat(this.router.config);
this.router.resetConfig(all);

userRoutes には、オーバーライドしたいアウトレットのみが含まれており、機能します。

于 2016-12-13T20:15:57.330 に答える
0

プロバイダーのリンクを app.module.ts ファイルにインポートします。

import { RoutesHelper } from 'give your path';

app.module.ts プロバイダー リストにプロバイダー クラス名を含めます。

プロバイダー: [RoutesHelper, //他のプロバイダー...],

QuestionComponent に RoutesHelper リンクをインポートするだけです。プロバイダーを定義する必要はありません。

于 2016-12-13T07:17:15.647 に答える