Я новичок в Angular и изучаю это сейчас. У меня проблема с обновлением свойства в одном компоненте из другого. У меня есть контейнерный компонент - app.component
, и два одера - create.component
и list.component
. Я хочу создать простое строковое значение в create.component
, а затем list.component
должно быть обновлено, но без результата. Ниже приведен код, представляющий то, что я сделал.
app.component.ts
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
myValues: string[];
ngOnInit() {
this.myValues = ['AAA', 'BBB', 'CCC'];
}
addValue(evt){
this.myValues.push(evt);
}
}
app.component. html
<app-create (newValue)="addValue($event)"></app-create>
<br><br>
<app-list [values]="myValues"></app-list>
create.component .ts
import {Component, Output, EventEmitter} from '@angular/core';
@Component({
selector: 'app-create',
templateUrl: './create.component.html'
})
export class CreateComponent {
@Output() newValue: EventEmitter<any> = new EventEmitter();
value;
createValue() {
this.newValue.emit(this.value);
}
}
create.component.html
<input type="text" [(ngModel)]="value"/><button (click)="createValue()">Add</button>
list.component.ts
import { Component, Input, OnInit, OnChanges } from "@angular/core";
@Component({
selector: "app-list",
templateUrl: "./list.component.html"
})
export class ListComponent implements OnChanges {
@Input() values;
public lowercaseValues: string[] = [];
ngOnChanges() {
this.values.forEach(v => {
this.lowercaseValues.push(v.toLowerCase());
});
}
}
list.component. html
<div *ngFor="let value of lowercaseValues">
{{value}}
</div>
Сделать строчные значения в list.component
просто пример действия с полученными данными.