gpt4 book ai didi

angularjs - 使力矩可注入(inject)angular2

转载 作者:太空狗 更新时间:2023-10-29 17:48:42 26 4
gpt4 key购买 nike

我想花时间在我的应用程序中进行注入(inject)。
我刚开始学习 ng2,在文档中找不到这种用法。
这是我的 app.module.ts 中的内容:

import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {FormsModule} from '@angular/forms';
import {HttpModule} from '@angular/http';
import {AppComponent} from './app.component';
import * as moment from 'moment';

@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [{provide: 'moment', useValue: moment}],
bootstrap: [AppComponent]
})
export class AppModule {
}

这是组件:

import { Component } from '@angular/core';

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.sass']
})


export class AppComponent {
title = 'app works!';

constructor(private moment) {
this.title += this.moment;
}
}

有这个错误:

Uncaught Error: Can't resolve all parameters for AppComponent:

这应该如何正确完成?

更新模块

const moment = new OpaqueToken('moment');

@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [{provide: moment, useValue: moment}],
bootstrap: [AppComponent]
})

export class AppModule {
}

更新的组件

import { Component } from '@angular/core';
import * as moment from 'moment';

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.sass']
})


export class AppComponent {
title = 'app works!';

constructor(private moment: moment) {
this.title += this.moment()
}
}

此行 constructor(private moment: moment) 上有一个错误,它告诉我们:Cannot find name 'moment'.

最佳答案

Moment 本身并不是 Angular2 的可注入(inject)对象。但是它可以包裹在一个里面。

Plunker Demo

moment.service.ts

import { Injectable } from '@angular/core';
import * as m from 'moment';
@Injectable()
export class MomentService {
moment = m;
}

app.module.ts

import { MomentService } from './moment.service';

@NgModule({
providers: [MomentService]
...

app.component.ts

import { MomentService } from './moment.service';

export class AppComponent {
constructor(private ms: MomentService){
console.log('Moment:' + this.ms.moment("20111031", "YYYYMMDD").toString());
}
}

不完美,但有效。

关于angularjs - 使力矩可注入(inject)angular2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39780378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com