无法实例化 DatePipe
Cannot Instantiate DatePipe
我正在尝试在我的 Angular2 应用程序中实例化一个 DatePipe
对象,以便在我正在开发的组件中使用 transform(...)
函数。
// ...
import { DatePipe } from '@angular/common';
@Component({...})
export class PanelComponent implements OnInit {
// ...
datePipe: DatePipe = new DatePipe(); // Error thrown here
// ...
}
此代码段在 RC5 中运行良好。现在我正在尝试升级到 Angular2 最终版本并在 运行 ng serve
或 ng build
,
时出现此错误
~/tmp/broccoli_type_script_compiler-input_base_path-XitPWaey.tmp/0/src/app/panel/panel.component.ts (33, 24):
Supplied parameters do not match any signature of call target.
我该如何解决这个问题?还有另一种实例化管道的方法吗?还是 Angular 停止支持在组件内实例化管道?
看起来一切正常,错误一定是在您的代码中的其他地方。
看我的 plunker:https://plnkr.co/edit/koDu6YmB131E6sXc6rKg?p=preview
import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {DatePipe} from '@angular/common';
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
</div>
`,
})
export class App {
dPipe = new DatePipe();
constructor() {
this.name = 'Angular2'
console.dir(this.dPipe);
console.log(this.dPipe.transform(new Date(), 'dd.MM'));
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ App ],
bootstrap: [ App ]
})
export class AppModule {}
还有@Harry Ninh ..你不能注入管道!!
如果您查看源代码,您会发现 DatePipe 构造函数要求提供必需的参数:
constructor(@Inject(LOCALE_ID) private _locale: string) {}
DataPipe 没有默认语言环境
https://github.com/angular/angular/blob/2.0.0/modules/%40angular/common/src/pipes/date_pipe.ts#L97
这就是打字稿报错的原因。
这样你必须启动你的变量,如下所示:
datePipeEn: DatePipe = new DatePipe('en-US')
datePipeFr: DatePipe = new DatePipe('fr-FR')
constructor() {
console.log(this.datePipeEn.transform(new Date(), 'dd MMMM')); // 21 September
console.log(this.datePipeFr.transform(new Date(), 'dd MMMM')); // 21 septembre
}
希望对您有所帮助!
我正在尝试在我的 Angular2 应用程序中实例化一个 DatePipe
对象,以便在我正在开发的组件中使用 transform(...)
函数。
// ...
import { DatePipe } from '@angular/common';
@Component({...})
export class PanelComponent implements OnInit {
// ...
datePipe: DatePipe = new DatePipe(); // Error thrown here
// ...
}
此代码段在 RC5 中运行良好。现在我正在尝试升级到 Angular2 最终版本并在 运行 ng serve
或 ng build
,
~/tmp/broccoli_type_script_compiler-input_base_path-XitPWaey.tmp/0/src/app/panel/panel.component.ts (33, 24):
Supplied parameters do not match any signature of call target.
我该如何解决这个问题?还有另一种实例化管道的方法吗?还是 Angular 停止支持在组件内实例化管道?
看起来一切正常,错误一定是在您的代码中的其他地方。 看我的 plunker:https://plnkr.co/edit/koDu6YmB131E6sXc6rKg?p=preview
import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {DatePipe} from '@angular/common';
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
</div>
`,
})
export class App {
dPipe = new DatePipe();
constructor() {
this.name = 'Angular2'
console.dir(this.dPipe);
console.log(this.dPipe.transform(new Date(), 'dd.MM'));
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ App ],
bootstrap: [ App ]
})
export class AppModule {}
还有@Harry Ninh ..你不能注入管道!!
如果您查看源代码,您会发现 DatePipe 构造函数要求提供必需的参数:
constructor(@Inject(LOCALE_ID) private _locale: string) {}
DataPipe 没有默认语言环境
https://github.com/angular/angular/blob/2.0.0/modules/%40angular/common/src/pipes/date_pipe.ts#L97
这就是打字稿报错的原因。 这样你必须启动你的变量,如下所示:
datePipeEn: DatePipe = new DatePipe('en-US')
datePipeFr: DatePipe = new DatePipe('fr-FR')
constructor() {
console.log(this.datePipeEn.transform(new Date(), 'dd MMMM')); // 21 September
console.log(this.datePipeFr.transform(new Date(), 'dd MMMM')); // 21 septembre
}
希望对您有所帮助!