私はAngularとTypeScriptが初めてで、MEANスタック(MongoDB、Express、Angular、Node.js)を使ってプロジェクトに取り掛かりました。TypeScriptからオブジェクトのプロパティにアクセスするには?
私はこのマングースモジュールを作成:
import * as mongoose from 'mongoose';
var Schema = mongoose.Schema;
const entrepriseSchema = new mongoose.Schema({
name: {type: String, unique: true, required : true},
telephone: Number,
logo: String,
web_site: String,
sites: [
{site_id: {type: Schema.Types.ObjectId, ref: 'Site'}}
]
});
const Entreprise = mongoose.model('Entreprise', entrepriseSchema);
export default Entreprise;
と、これは私のentreprise.component.tsです:
import { Component, OnInit } from '@angular/core';
import { Http } from '@angular/http';
import { FormGroup, FormControl, Validators, FormBuilder } from '@angular/forms';
import { ActivatedRoute } from '@angular/router';
import { EntrepriseService } from '../services/entreprise.service';
import { SiteService } from '../services/site.service';
@Component({
selector: 'app-entreprise',
templateUrl: './entreprise.component.html',
styleUrls: ['./entreprise.component.scss'],
providers: [EntrepriseService, SiteService]
})
export class EntrepriseComponent implements OnInit {
entreprise = {};
sites = [];
id: String;
constructor(private entrepriseService: EntrepriseService,
private siteService: SiteService,
private http: Http,
private route: ActivatedRoute) {
this.id = route.snapshot.params['id'];
}
ngOnInit() {
this.getEntrepriseById(this.id);
//not working
//console.log(this.entreprise.name);
//console.log(this.entreprise.sites);
//this.getSitesIn(this.entreprise.sites);
}
getEntrepriseById(id) {
this.entrepriseService.getEntreprise(id).subscribe(
data => this.entreprise = data,
error => console.log(error)
);
}
getSitesIn(ids) {
this.siteService.getSitesIn(ids).subscribe(
data => this.sites = data,
error => console.log(error)
);
}
}
私はentreprise.component.htmlから返されたのプロパティを表示しようとすると、それはうまく動作し、すべてのプロパティを表示します:
<h3>{{entreprise.name}}</h3>
<div *ngFor="let site of entreprise.sites">
{{site.site_id}}
</div>
{{entreprise.logo}}
{{entreprise.web_site}}
どのように私は同じprにアクセスできますかTypeScript側での操作は? EntrepriseComponentのコメント付きコードは、私が達成しようとしているものですが、this.entreprise
がタイプ{}であるため動作しません。
可能な複製に
getEntrepriseById
機能を変更します(https://stackoverflow.com/questions/43055706/how-do- I-リターン・レスポンスから-観測可能-HTTP-非同期コールに-angular2) – echonax