我在Angular 4中使用自定义请求选项,我在执行以下操作:
默认情况下,请求options.service.ts
@Injectable()
export class DefaultRequestOptions extends BaseRequestOptions {
headers = new Headers({
'Accept': 'application/json',
'Content-Type': 'application/json'
});
merge(options?: RequestOptionsArgs): RequestOptions {
var newOptions = super.merge(options);
const token: string = localStorage.getItem('token');
if (token) {
newOptions.headers.set('token', token);
}
return newOptions;
}
}
Run Code Online (Sandbox Code Playgroud)
App.Module.ts
providers: [ // expose our Services and Providers into Angular's dependency injection
{ provide: RequestOptions, useClass: DefaultRequestOptions }
]
Run Code Online (Sandbox Code Playgroud)
但是在迁移通知之后,新文件夹http/common/http中的RequestOption不可用
我想知道我是否仍然可以在Angular 5中使用类似的东西,或者使用新的HTTPClient没有意义吗?对我来说,主要的优点是只设置在一个地方,而不必将其附加到我的所有要求.
我最初在angular docs中得到了代码:https://github.com/angular/angular.io/blob/master/public/docs/_examples/server-communication/ts/src/app/default-request-options. service.ts
我正在尝试在最终版本2.0.0中动态加载组件.
使用RC5我使用以下代码加载:
创建一个指令来加载控件:
import {
CheckboxComponent, CheckboxListComponent,DatePickerComponent
} from '../components/';
@Directive({
selector: '[ctrl-factory]'
})
export class ControlFactoryDirective implements OnChanges {
@Input() model: any;
constructor(private vcRef: ViewContainerRef, private resolver: ComponentResolver) {
}
create(cp) {
this.resolver.resolveComponent(cp)
.then(factory => {
const injector = ReflectiveInjector.fromResolvedProviders([], this.vcRef.parentInjector);
this.vcRef.createComponent(factory, 0, injector, []);
let ch = this.vcRef.createComponent(factory, 0, injector, []).instance;
ch.model = this.model;
});
}
ngOnChanges() {
if (!this.model) return;
switch (this.model.type) {
case 'checkbox':
this.create(CheckboxComponent);
break;
case 'checkboxlist':
this.create(CheckboxListComponent);
break;
case 'datepicker':
this.create(DatePickerComponent);
break;
default:
break; …Run Code Online (Sandbox Code Playgroud)