V jednu složku pole. a chcete, aby ostatní komponenty mají přístup do tohoto pole. nejsou rodič-dítě. já používám směrování

0

Otázka

chci předat addedToCart pole z této složky

export class ProductComponent implements OnInit {
  ***
  addedToCart: Item[] = [];
  constructor(private data: DataService) { }


  addToCart(product:Item){
  ***
}
  ngOnInit(): void {
    this.data.getData()
    .subscribe(
      response =>{
        this.products = response
      }
    )
  }

}

chci, aby tento prvek, jak dostat data. existuje nějaký jednoduchý způsob?

    export class CartComponent implements OnInit {
      cartItems:Item[] | undefined;
      constructor() { }
    
      ngOnInit(): void {
      }
    
    }
1

Nejlepší odpověď

0

Můžete používat chování subjektů, aby dělat práci za vás v tomto případě.

Vytvoření společné Služby souboru, které mají být použity v celé aplikaci.

V common service souboru, můžete udělat toto:

@Injectable({
  providedIn: 'root'
})
export class CommonService {


initialValuesForProductsArray: string[] = [];

productsArraySource: BehaviorSubject<string[]> = new BehaviorSubject<string[]>(this.initialValuesForProductsArray);

productsArrayObservable: Observable<string[]> = this.productsArraySource.asObservable();

constructor() {}

setProductsArray(data: string[]) {
  this.productsArraySource.next(data);
}

getProductsArray(): Observable<string[]> {
  return this.productsArrayObservable;
}

}

Nyní ve své součásti, postupujte takto:


export class ProductComponent implements OnInit {
  ***
  addedToCart: Item[] = [];
  constructor(
     private data: DataService,
     private commonService: CommonService <<<<<<<<<<< ADD THIS LINE >>>>>>>>
  ) { }


  addToCart(product:Item){
  ***
}
  ngOnInit(): void {
    this.data.getData()
    .subscribe(
      response =>{
        this.products = response;
        this.commonService.setProductsArray(this.products); <<<<<<< ADD THIS LINE >>>>>>

      }
    )
  }

}

Ve vašem složku, kam chcete data, postupujte takto:

    export class CartComponent implements OnInit {
      cartItems:Item[] | undefined;
      constructor(private commonService: CommonService) {} <<<<< ADD THIS LINE >>>>
    
      ngOnInit(): void {
        <<<<<<<< ADD BELOW LINES >>>>>>>>
        this.commonService.getProductsArray().subscribe(data => {
           if (data && data.length) {
              this.cartItems = data;
           }
        });
      }
    
    }

to, jak budete používat, chování subjektů nastavit, získat data mezi komponenty.

2021-11-18 14:54:33

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................