2017-10-20 10 views
0

토스트 용 자체 스타일 및 html로 내 애플리케이션에서 전역 토스트 서비스를 수행하려고합니다. 나는 ng2-toastr를 사용하고 있습니다. 예를 들어 난 관점에서 A 성분이 난이 버튼 :토스트 메시지 용 서비스에서 구성 요소를 초기화하는 방법

난 showSuccess 기능이 컨트롤러
<button (click)="showSuccess()">Click</button> 

:

import { Injectable } from '@angular/core'; 
    import { ToastsManager } from 'ng2-toastr/ng2-toastr'; 

    @Injectable() 
    export class ToastrService { 
    constructor(public toastr: ToastsManager) {} 
    showSucess() { 
     this.toastr.custom('<span style="color: #bd362f">This message should be in red with blank background. Click to dismiss.</span>', 
     'Custom Message', {dismiss: 'click'}); 
    } 
    } 
내 ToastrService에서
showSucess() { 
    this.toastrService.showSuccess({ 
     enableHTML: true, 
     toastLife: 3000, 
    }); 
    } 

는 내 showSuccess 기능이

this.toastr.custom -이 함수에서 나는 내 자신의 토스트 템플릿을 설정합니다. 서비스에서이 템플리트를 제거하려고하므로이 템플리트로 구성 요소를 원합니다.

이 문자열을 HTML로 대체하려면 어떻게해야합니까? 이 문자열을 component의 innerHTML 또는 이와 비슷한 것으로 바꾸려고합니다. 내 질문의 맨 위에서 구성 요소의 토스트 옵션을 사용하여이 구성 요소의 공유를 원합니다.

AngularJs에서 파일에서 HTML을 가져 오기 위해 $ templateCache를 사용했지만 angular2에서 + 이와 같은 것을 찾을 수 없습니다.

답변

0

html 마크 업과 함께 문자열 대신 구성 요소를 사용할 수 있습니다. 보십시오 here at the source code.

custom(message: string, title?: string, options?: any): Promise<Toast> 

당신이 아닌 문자열 구성 요소를 제공해야합니다

라인 (158)은 사용자 정의 방법이있다.

json과 같은 외부 파일에서 HttpClient를 사용하여이 작업을 읽을 수 있습니다.

+0

예,이 함수에서는 문자열 만 사용할 수 있습니다. 어쩌면 Angular4에서 서비스에 대한 ElementRef와 같은 것이거나, 구성 요소에 액세스하거나, 서비스에서 구성 요소를 초기화 할 수 있습니까? –

+0

아마도 DynamicComponentLoader : https://angular.io/guide/dynamic-component-loader와 함께 사용하는 이유는 무엇입니까? (너무 많은 개발을 '전용'으로 설정하면 구성에 저장 될 수있는 html 마크 업/메시지 파일) –