2016-05-31 4 views
2

Я не знаю, что я чего-то не хватает, но встраивание конструктора пользовательского класса baserequestopions действительно работает для меня в бета-версии 17, но после перехода на RC1 этот подход больше не работает ,Angular2 RC BaseRequestOption Constructor Injection

Я создал plunkr, чтобы проиллюстрировать, что webapibaseurl теперь приходит через, как неопределенный (тот же самый код, но с подходом Beta 17 ссылки работала):

https://embed.plnkr.co/usOljRDLap9RlLd3RIBd/

Есть идеи?

ответ

0

Это все еще работает для меня. Вот класс пользовательский вариант я использовал:

import {BaseRequestOptions, RequestOptions, RequestOptionsArgs} from '@angular/http'; 

export class AppRequestOptions extends BaseRequestOptions { 
    constructor() { 
    } 

    merge(options?:RequestOptionsArgs):RequestOptions { 
    options.url = 'https://www.test.org' + options.url; 
    return super.merge(options); 
    } 
} 

и зарегистрировать это так:

bootstrap(App, [ 
    HTTP_PROVIDERS, 
    provide(RequestOptions, {useClass: AppRequestOptions}) 
]); 

Посмотреть этот plunkr: https://plnkr.co/edit/MK30JR2qK8aJIGwNqMZ5?p=preview.

Редактировать

Кажется, что существует проблема на уровне инжекции зависимостей для такого класса. Я открыл вопрос: https://github.com/angular/angular/issues/8925.

+1

Спасибо, что вернулись ко мне. Сам класс параметров хорош и работает над запросами, но для меня ключевым является попытка ввести «webApiBaseUrl» (или что-то еще в этом случае), которое проходит как «неопределенное». – Monkeeman69

+0

@ Monkeeman69 Вуа, ты совершенно прав. Кажется, что инъекция зависимостей не работает на классы, которые расширяют «BaseRequestOptions» ... В то время как инъекция («webApiBaseUrl») возможна где-то в другом месте. Я думаю, что это ошибка/регресс. Я открою для этого ошибку. –

+0

Вот проблема, которую я открыл: https://github.com/angular/angular/issues/8925. –

4

Расширение от RequestOptions, а не из BaseRequestOptions сделал это работает для меня

@Injectable() 
export class AppRequestOptions extends RequestOptions { 
    constructor(@Inject('webApiBaseUrl') private webApiBaseUrl:string) { 
    super({method: RequestMethod.Get, headers: new Headers()}); 
    console.log('webApiBaseUrl', webApiBaseUrl); 
    } 

    merge(options?:RequestOptionsArgs):RequestOptions { 
    options.url = this.webApiBaseUrl + options.url; 
    console.log('merge - options.url = '+options.url); 
    return super.merge(options); 
    } 
} 

иначе по неизвестной причине инъекционного @Inject('webApiBaseUrl') private webApiBaseUrl:string не работает.

Plunker example