Meh*_*aki 7 typescript angular
我有一个打字稿类如下:
export class ImageItem{
constructor(public Id: number, public ImageUrl: string, public Caption: string, public Description: string, private _sanitizer: DomSanitizer)
{
}
}
Run Code Online (Sandbox Code Playgroud)
所有构造函数的参数都是与该类相关的属性,但最后一项是注入我的类的类.我的问题是,如果我想创建这个类的对象,我想做一些如下所示的事情:
var a=new ImageItem(1, 'image1', 'http://aaa.com/aa.jpg', '')
Run Code Online (Sandbox Code Playgroud)
但是由于注入的项目,它给了我一个错误.我想知道如何解决这个问题.
tos*_*skv 11
你需要的是一个工厂服务,它能够创建这种类的实例,同时注入你想要注入的属性.
它看起来像这样.
的图像item.ts定义一个简单的类:
import { DomSanitizer } from '@angular/platform-browser';
export class ImageItem {
constructor(public Id: number, public ImageUrl: string, public Caption: string,
public Description: string, private _sanitizer: DomSanitizer) {
}
}
Run Code Online (Sandbox Code Playgroud)
该工厂是一个注入服务,注入DomSanitizer并具有一个能够创建ImageItem实例的方法.
import { Injectable } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { ImageItem } from './image-item';
@Injectable()
export class ImageItemFactoryService {
constructor(private domSanitizer: DomSanitizer) { }
public createImageItem(id: number, description: string) {
return new ImageItem(id, '', '', description, this.domSanitizer);
}
}
Run Code Online (Sandbox Code Playgroud)
该app.component.ts进口厂家的供应商,并使用它来创建的实例的ImageItem.
import { Component } from '@angular/core';
import { ImageItem } from './image-item';
import { ImageItemFactoryService } from './image-item-factory.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: [ImageItemFactoryService]
})
export class AppComponent {
private item: ImageItem = null;
constructor(public imageItemFactory: ImageItemFactoryService) {
this.item = imageItemFactory.createImageItem(1, 'something');
}
}
Run Code Online (Sandbox Code Playgroud)
在angularjs(1)中,可以使用注射器来创建实例,并且可以同时在注射期间给出一些局部值.
在angular(2)中,Injector服务不再提供该功能.
| 归档时间: |
|
| 查看次数: |
16648 次 |
| 最近记录: |