加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 具有多个参数和注入项的TypeScript构造函数

发布时间:2020-12-17 17:47:06 所属栏目:安全 来源:网络整理
导读:我有一个打字稿类如下: export class ImageItem{ constructor(public Id: number,public ImageUrl: string,public Caption: string,public Description: string,private _sanitizer: DomSanitizer) { }} 所有构造函数的参数都是与该类相关的属性,但最后一项
我有一个打字稿类如下:

export class ImageItem{
    constructor(public Id: number,public ImageUrl: string,public Caption: string,public Description: string,private _sanitizer: DomSanitizer)
    {
    }
}

所有构造函数的参数都是与该类相关的属性,但最后一项是注入我的类的类.我的问题是,如果我想创建这个类的对象,我想做一些如下所示的事情:

var a=new ImageItem(1,'image1','http://aaa.com/aa.jpg','')

但是由于注入的项目,它给了我一个错误.我想知道如何解决这个问题.

解决方法

你需要的是一个工厂服务,它能够创建这种类的实例,同时注入你想要注入的属性.

它看起来像这样.

image-item.ts定义了一个简单的类:

import { DomSanitizer } from '@angular/platform-browser';

export class ImageItem {
    constructor(public Id: number,private _sanitizer: DomSanitizer) {
    }
}

该工厂是一个注入服务,注入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);
  }
}

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

在angularjs(1)中,可以使用注射器来创建实例,并且可以同时在注射期间给出一些局部值.

在角度(2)中,Injector服务不再提供该功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读