CookieXSRFStrategy не работает в режиме AOT @angular


Я предоставляю CookieXSRFStrategy для XSRFStrategy в приложении.модуль.ts

providers: [
    { provide: APP_BASE_HREF, useValue: '/order/' },
    { provide: XSRFStrategy, useValue: new CookieXSRFStrategy('csrftoken', 'X-CSRFToken') },
    { provide: RequestOptions, useClass: DefaultRequestOptions }
  ],

Отлично работает с watch/serve на втором билде, но при сборке с флагом --prod, получая эту ошибку:

Ошибка в ошибке, возникающей при статическом разрешении значений символов. Вызовы функций не поддерживаются. Рассмотрите возможность замены функции или лямбда-код со ссылкой на экспортируемую функцию (позиция 50: 34 в оригинал.файл TS), разрешение символом модуль в E:/repo/src/app/app.модуль.ts

Ng -- version

@angular/cli: 1.0.0
node: 6.9.1
os: win32 x64
@angular/common: 4.0.0
@angular/compiler: 4.0.0
@angular/core: 4.0.0
@angular/forms: 4.0.0
@angular/http: 4.0.0
@angular/platform-browser: 4.0.0
@angular/platform-browser-dynamic: 4.0.0
@angular/router: 4.0.0
@angular/animations: 4.0.0
@angular/cli: 1.0.0
@angular/compiler-cli: 4.0.0
1 5

1 ответ:

Отвечая на мой собственный вопрос, обнаружил, что я должен использовать ссылку на экспортируемую функцию, поэтому использую как:

providers: [
    { provide: APP_BASE_HREF, useValue: '/order/' },
    { provide: XSRFStrategy, useValue: cookieStrategy },
    { provide: RequestOptions, useClass: DefaultRequestOptions }
],

export function cookieStrategy() {
  return  new CookieXSRFStrategy('csrftoken', 'X-CSRFToken');
}

Скомпилирован хорошо, но давал ошибку времени выполнения: as

Ошибка TypeError: это._xsrfStrategy.configureRequest-это не функция

Изменения useValue в предоставляют useFactory Исправлена проблема

providers: [
    { provide: APP_BASE_HREF, useValue: '/order/' },
    { provide: XSRFStrategy, useFactory: cookieStrategy },
    { provide: RequestOptions, useClass: DefaultRequestOptions }
  ],