2017-10-20 67 views
0

我想在我的應用程序中使用自己的樣式和html進行全球敬酒服務。我正在使用ng2-toastr。 例如我有組分A鑑於我有按鈕:如何從服務初始化組件到吐司消息

<button (click)="showSuccess()">Click</button> 

在控制器我有showSuccess功能:

showSucess() { 
    this.toastrService.showSuccess({ 
     enableHTML: true, 
     toastLife: 3000, 
    }); 
    } 

以我ToastrService我有我showSuccess功能:

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'}); 
    } 
    } 

this.toastr.custom - 在這個函數中,我設置了我自己的敬酒模板。 現在,我想用這個模板做組件,因爲我想從服務中刪除這個模板。

我怎樣才能用組件與HTML替換這個字符串?我想用組件的innerHTML替換這個字符串,或者類似的東西。我想在這個組件中分享來自我問題頂部的組件的選項選項。

在AngularJs中,我使用$ templateCache從文件中獲取html,但在angular2 +中我找不到像這樣的東西。

回答

0

我想你不能使用組件而不是使用html標記的字符串。 看一看here at the source code

線158具有定製方法:

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

你必須提供一個字符串,而不是一個組成部分。

你可以做的是使用HttpClient從外部文件(如json)中讀取它。

+0

是的,在這個函數中我只能使用字符串。也許在Angular4中就像服務的ElementRef,訪問組件,或從服務初始化組件? –

+0

也許與DynamicComponentLoader:https://angular.io/guide/dynamic-component-loader,但我不明白爲什麼要使用它(太'開發''只'獲得一個HTML標記可以存儲在配置/消息文件) –