2017-12-18 6 views
0

Angular 4.x 프로젝트에서는 Angular Universal을 angular2-cookie-law과 함께 사용합니다. Angular Universal이 window, document 등으로 작동하지 않는다는 사실을 알고 있지만 몇 가지 해결 방법에 대해 읽었습니다.각도 유니버설에 쿠키를 설정하는 방법은 무엇입니까?

if (isPlatformBrowser(this.platformId)) { 
    this.showCookieLaw = true; 
} 

그리고이 같은 관점에서 내 쿠키 법률 구성 요소를 포장 : 나는 다음을 시도

<cookie-law *ngIf="showCookieLaw">...</cookie-law> 

그러나,이 작동하지 않았고 지금까지 다른 접근 방법을 발견하지 않았습니다. 누구든지 나를 올바른 방향으로 안내 할 수 있습니까?

+0

이 무엇 작동하지 않았다 '않는 말은? – estus

+0

NodeJS 서버를 시작한 상태에서 프로젝트를 실행할 때'문서가 정의되지 않았습니다. '오류가 발생합니다. 즉, 프리 렌더러는 Angular Universal을 사용할 때의 문제점 인 document 요소를 이해하지 못합니다. – Lars

+0

질문에 명시 적으로 언급해야합니다. – estus

답변

0

모듈이 별도의 공급자를 추상화로 document.cookie 이상 사용하는 경우 서버용으로 별도로 정의 할 수 있습니다. 그러나 document을 전역으로 직접 사용하므로 해당 책임 공급자는 서버 모듈에서 조롱되어야합니다.

고려 the component uses service's seen public method 것으로,이 스텁해야 하나, 같은 것입니다 :

import { CookieLawService } from 'angular2-cookie-law'; 

exports class MockedCookieLawService { 
    seen =() => false; 
} 

... 
imports: [CookieLawModule, ...], 
providers: [{ provide: CookieLawService, useClass: MockedCookieLawService }, ...] 
... 
+0

해결책을 찾을 수 없었기 때문에 다른 접근 방법을 계속 찾았습니다. 얼마 후 [다음 답변] (https://stackoverflow.com/a/44402938/1164012)이 나에게 도움을 주었다. – Lars

+0

프로젝트 구조가 어떻게 보이는지 분명하지 않았습니다. '서버 모듈에서 조롱 받아야한다'는 답변에서 설명 된 것을 참조하십시오. – estus