0
我有一個簡單的表單驗證器函數。從表單驗證器函數訪問單例服務
static required(control: FormControl) {
if (control.value == null || control.value.length <= 0)
return {'required': false, 'errorMsg': 'Value is required'}
return null
}
我想改變它,所以它沒有返回一個硬編碼errorMsg
而是一個本地化的消息。問題在於它拒絕與我的本地化服務(稱爲LocaleService
)一起工作。
該服務有一個叫做locale
的單一道具。這是一個包含所有本地化消息的JSON對象。在組件中使用起來非常簡單:我只是在構造函數中創建一個私有實例,然後它就可以訪問了。
但驗證器類不希望這樣。對於初學者來說,如果我嘗試這樣做:
import {LocaleService} from '../services/locale.service';
export class FormValidators {
constructor(private _localeService: LocaleService) {}
static required(control: FormControl) {
if (control.value == null || control.value.length <= 0)
return {'required': false, 'errorMsg': 'Value required'}
return null
}
}
整個事情立即打破,甚至不會建立。該錯誤信息是:
Uncaught Error: Can't resolve all parameters for FormValidators: (?).
我試圖創建靜態函數內部的LocaleService
一個實例,但它不會允許的。它也不允許將其作爲參數傳遞或從全局變量中獲取它。這總是一個錯誤。
那麼我怎樣才能得到這個功能與服務交談?
是你的LocaleService'@ Injectable'? –
是的,它是@Injectable。 –