angular - 类型上不存在属性发出

标签 angular

我试图通过服务通过 Subject 将数据从一个组件传递到另一个组件,但我收到以下错误

属性“emit”在类型“Subject(any)”上不存在。

这是我尝试过的

component.ts 文件

import { Component, OnInit } from '@angular/core';
import { Productservice } from 'src/app/services/products.service';
import { Router, ActivatedRoute } from '@angular/router';


@Component({
selector: 'app-admin-products',
templateUrl: './admin-products.component.html',
styleUrls: ['./admin-products.component.scss']
})
export class AdminProductsComponent implements OnInit {
listofproducts
editedproduct
constructor(private prservice:Productservice,private 
router:Router,private route:ActivatedRoute) { 

}

ngOnInit() {
this.listofproducts=this.prservice.getallproducts()


}




onclickedit(id){

this.editedproduct=this.prservice.getspecificproduct(id)
this.prservice.editproduct.emit(this.editedproduct)
this.router.navigate(['edit',id],{relativeTo:this.route})
}

}

因此在 emit 中它说 Property 'emit' does not exist on type 'Subject(any)

服务文件

import { Subject } from "rxjs";
import { Items } from "../home/header/admin-products/items.modal";

export class Productservice{

productcard=new Subject<any>()

editproduct=new Subject<any>()





getallproducts(){
    return this.cards
}
getspecificproduct(id){
    return this.cards[id]
}

} 

这是我订阅它的组件

import { Component, OnInit, Input } from '@angular/core';
import { Productservice } from 'src/app/services/products.service';
import { Router, ActivatedRoute } from '@angular/router';
import { take } from 'rxjs/operators';

@Component({
selector: 'app-edit-products',
templateUrl: './edit-products.component.html',
styleUrls: ['./edit-products.component.scss']
})
export class EditProductsComponent implements OnInit {
id:number
constructor(private prservice:Productservice,private 
router:Router,private route:ActivatedRoute) { }

ngOnInit() {

this.route.params.subscribe(
  (params)=>{
    this.id=+params['id']
    console.log(this.id)
  }
)
this.prservice.editproduct.pipe(take(1)).subscribe(
  (editproductdetails)=>{
    console.log(editproductdetails)
  }
)

}

}

最佳答案

您应该通过 next 发出值,而不是发出。

改变这一行:

this.prservice.editproduct.emit(this.editedproduct)

对此

this.prservice.editproduct.next(this.editedproduct)

关于angular - 类型上不存在属性发出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54654713/

相关文章:

javascript - 使用 Angular Observable 满足异步分支和同步分支

Angular Material Tabs 不适用于包装器组件

javascript - Ag Grid - 取消时将表重置为原始状态

javascript - 如何在 Angular 的 chrome 浏览器中捕获控制台日志

javascript - 对于给定的容器高度,如何在每个给定高度(比如每 10 厘米)后重复容器 div 内的 html 元素?

angular - 如果我有多个菜单,以编程方式切换菜单?

html - Angular 2更改HTML元素的文本

angular - 访问 activatedRoute.params 服务

javascript - 是否可以在 Angular 2 中为相同的组件设置不同的样式?

javascript - 我应该如何在 Angular 自定义元素(Web 组件)中引用 Assets