【问题标题】:How to initialize object, array and object-array in angular service class?如何在角度服务类中初始化对象、数组和对象数组?
【发布时间】:2019-09-16 09:09:10
【问题描述】:

如何在角度服务类中初始化对象和数组对象中的对象? 我想在my-form中使用双向绑定,所以我想将变量从服务类传递给Html模板。

trainer.service.ts

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

import { Trainner } from '../trainner.model';
import { Observable } from 'rxjs';

const headerOption = {
 headers : new HttpHeaders({'Content-Type': 'application/json'})
};

@Injectable({
  providedIn: 'root'
})

  export class TrainnerService {
     selectedTrainer: Trainner;
      _url = 'http://localhost:3000/trainner';

  constructor( private _http: HttpClient ) { }

  register(registrationFormData) {
    return this._http.post<any>(this._url, registrationFormData);
  }

  getAllTrainner(): Observable<Trainner[]> {
    return this._http.get<Trainner[]>(this._url, headerOption);
  }

  putTrainner(trainer : Trainner): Observable<Trainner[]> {
    return this._http.put<Trainner[]>(this._url + `/$(emp._id)`, trainer);
  }
}

我有model.ts文件

export class Trainner {
personal_details: { type: Object,
    name: { type: Object,
        first_name: String,
        last_name: String
    },
    dob: String,
    about_yourself: String,
    languages_known: { type: Array<Object>,
        items: {
            type: String
        }
    },
    willingly_to_travel: String
};

}

【问题讨论】:

  • map 方法可以帮助你。
  • 你能告诉我一些语法吗@ngShravil.py
  • 您需要初始化哪个变量?
  • 如您所见,我有一个 model.ts 文件,因此我需要初始化该特定模式,以便在发生更新事件时可以使用双向绑定@LahiruChandima

标签: javascript html angular typescript


【解决方案1】:

您可以创建多个模型类。您可以更新当前模型并创建一个包含名称对象的TrainerName.ts 类和包含语言对象的Language.ts。像这样:

export class TrainerName{
 first_name: String,
 last_name: String
}

Language 模型类如:

export class Language {
items:  String       
}

并在您当前的模型类中使用它,例如:

export class Trainner {
personal_details: { type: Object,
    name: TrainerName,
    dob: String,
    about_yourself: String,
    languages_known: Language[],
    willingly_to_travel: String
};

}

在您的服务中,您可以使用map

getAllTrainner(): Observable<Trainner[]> {
    return this._http.get<Trainner[]>(this._url, headerOption).map(res => new Trainner(res));
  }

【讨论】:

  • 你的模型类中还需要一个构造函数
  • drive.google.com/file/d/1TcytFU8FQJlH37u0MxpjHFhtFRghjphB/… 请检查图片,仍然出现错误@Jazib
  • @GRV 是的,您收到错误消息,因为您使用的是 object literalTrainerName 是类型而不是值。所以你可以像这样使用构造函数name: new TrainerName(firstName, lastName) sth
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 2020-04-21
  • 2016-03-11
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 2017-02-16
相关资源
最近更新 更多