【发布时间】:2020-08-01 04:17:39
【问题描述】:
我对 Angular 相当陌生,并且无法将数组传递给不同的(与父/子无关的)组件。我想要在我的应用程序中单击一个按钮以将其标记为“已接受”,并以不同的路线在不同的视图(接受的数组视图)中显示相同的数组。我已经尝试使用@Input 和共享服务来完成此操作,但它就是行不通。你能指出我正确的方向吗?谢谢。
sharedService.ts //My array is called 'Turno'
import {Injectable} from '@angular/core';
import {Turno} from '../models/turno';
@Injectable()
export class SharedService{
public turno:Turno;
constructor(){
}
setArray(turno){
this.turno=turno;
}
getArray(){
return this.turno;
}
}
第一个组件(我用 accept() 方法标记了一个接受的数组):
@Component({
selector: 'app-turnos',
templateUrl: './turnos.component.html',
styleUrls: ['./turnos.component.css'],
providers:[TurnoService, SharedService]
})
export class TurnosComponent implements OnInit {
public turnos: Turno;
public status;
constructor(
private _turnoService: TurnoService,
private _sharedService: SharedService
) { }
ngOnInit(): void {
this._turnoService.getTurnos().subscribe(
response=>{
if(response.status== 'success'){
this.turnos= response.turnos;
this.status=response.status;
console.log(this.turnos);
}else{
this.status= 'error';
}
},error=>{
console.log('error');
}
);
}
accept(turno){
this._sharedService.setArray(turno);
console.log(turno);
}
第二个组件(接收并列出接受的数组)
import { Component, OnInit} from '@angular/core';
import {SharedService} from '../../services/shared.service';
import {Turno} from '../../models/turno';
@Component({
selector: 'app-turnoaceptado',
templateUrl: './turnoaceptado.component.html',
styleUrls: ['./turnoaceptado.component.css'],
providers:[SharedService]
})
export class AcceptedTurnoComponent implements OnInit {
public turnos: Turno;
constructor(
private _sharedService: SharedService
) { }
ngOnInit(): void {
this.turnos=this._sharedService.getArray();
console.log(this.turnos);
}
}
【问题讨论】:
-
您能否向我们展示您尝试共享服务的代码?
-
抱歉,已经完成了! :)
标签: arrays angular components sharing