ホームページ >ウェブフロントエンド >jsチュートリアル >バックエンドでレンダリングされたパラメーターを Angular2 ブートストラップ メソッドに渡すにはどうすればよいですか?

バックエンドでレンダリングされたパラメーターを Angular2 ブートストラップ メソッドに渡すにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-11 02:03:14979ブラウズ

How Can I Pass Backend-Rendered Parameters to the Angular2 Bootstrap Method?

バックエンドでレンダリングされたパラメーターを Angular2 ブートストラップ メソッドに渡す

バックエンドでレンダリングされた引数を Angular2 ブートストラップ メソッドに渡すには、Angular の依存関係注入を利用します。能力。これを実現する方法は次のとおりです:

var headers = ... // Retrieve headers from the server

bootstrap(AppComponent, [{ provide: 'headers', useValue: headers }]);

このアプローチにより、これらのパラメーターを Angular コンポーネントまたはサービスに注入できます:

class SomeComponentOrService {
   constructor(@Inject('headers') private headers) {}
}

あるいは、次のように、準備された BaseRequestOptions を直接提供することもできます。

class MyRequestOptions extends BaseRequestOptions {
  constructor(private headers) {
    super();
  }
} 

var values = ... // Fetch headers from the server
var headers = new MyRequestOptions(values);

bootstrap(AppComponent, [{ provide: BaseRequestOptions, useValue: headers }]);

このメソッドを使用すると、これらのヘッダーを Angular アプリケーションで注入して使用できます。 BaseRequestOptions を直接:

class ConfigService {
  constructor(private http: Http, @Inject(BaseRequestOptions) private baseRequestOptions) { }
}

注: AoT コンパイルの場合、ファクトリ クロージャをクラスの外に移動します:

function loadContext(context: ContextService) {
  return () => context.load();
}

NgModule 内:

@NgModule({
  ...
  providers: [ ..., ContextService, { provide: APP_INITIALIZER, useFactory: loadContext, deps: [ContextService], multi: true } ],
For cyclic dependency issues, inject the Injector and retrieve the dependency:

this.myDep = injector.get(MyDependency);

Instead of directly injecting `MyDependency`:

@Injectable()
export class ConfigService {
プライベート ルーター:Router;
コンストラクター(/プライベート ルーター:Router/ インジェクター:インジェクター) {

setTimeout(() => this.router = injector.get(Router));
}

}

以上がバックエンドでレンダリングされたパラメーターを Angular2 ブートストラップ メソッドに渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。