gpt4 book ai didi

angular - 在组件之间共享数据(Angular 7)

转载 作者:行者123 更新时间:2023-12-03 23:52:56 27 4
gpt4 key购买 nike

我目前正在尝试使用“BehaviorSubject”通过数据服务在组件之间发送数据。在第一个组件中,我正在更新 messageSoruce 并在第二个组件中检索数据但它是空的。我检查了值“this.card.img”不为空。我错过了什么?

数据服务

import { Injectable } from '@angular/core';
import { BehaviorSubject, Subject } from 'rxjs';


@Injectable()
export class DataService {

private messageSource = new BehaviorSubject("")
currentMessage = this.messageSource.asObservable();

constructor() { }

changeMessage(message: string) {
this.messageSource.next(message)
}

}

第一个组件
import {Component} from '@angular/core';
import {Router} from '@angular/router';
import {DataService} from 'src/app/services/data/data.service';


@Component({
selector: 'app-card',
templateUrl: './card.component.html',
providers: [ DataService ],
styleUrls: ['./card.component.css']
})


export class CardComponent {



@Input('card') card:Card


constructor(public router: Router,
public dataService :DataService ) {

}

openDetails() {

this.dataService.changeMessage(this.card.img)
this.router.navigateByUrl('/imganalyse');

}

}

第二个组件
import { Component, OnInit, } from '@angular/core';
import {DataService} from '../../services/data/data.service'

@Component({
selector: 'app-imganalyse',
templateUrl: './imganalyse.component.html',
providers: [ DataService ],
styleUrls: ['./imganalyse.component.css']
})



export class ImganalyseComponent implements OnInit {

channel: string;

constructor(private youtubeService:YoutubeService,
private dataService:DataService) {

}

ngOnInit() {

this.dataService.currentMessage.subscribe(channel => this.channel = channel)


console.log(this.channel)

}

}

最佳答案

解决方案:

provider: [DataServie] 只需要在 app.module.ts 中设置为只使用一个实例。就我而言,每个组件都有自己的 dataservice provider ,因此它有多个实例......(这就是它始终为空的原因)

关于angular - 在组件之间共享数据(Angular 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54726860/

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