typescript - Angular'da başka bir bileşenden bir metot nasıl çağrılır?
Bir Angular bileşeninden diğerine bir metodu çağırmaya çalışıyorum
Bu one.component.ts, bir gün tatil olup olmadığını kontrol etmesi gerekiyor
export class CalendarComponent implements OnInit {
isDayOfWeekDisabled(dayOfWeek: number): boolean {
let dateIsDisabled = false;
const workDay=
moment(this.viewDate).startOf('isoWeek').add(dayOfWeek, 'd');
this.disabledAreas.forEach((item) => {
if (item.start.isSame(moment(workDay)) &&
item.end.isSame(moment(workDay.endOf('day')))) {
dateIsDisabled = true;
}
});
return dateIsDisabled;
} }
ve another.component.ts; eğer gün tatil=doğru ise, o gün için yapılacakları göstermez:
filterDateInDisabledArea(): boolean {
for (const disabledArea of this.disabledAreas) {
if (isDayOfWeekDisabled()) {
return false;
}
}
return true;
}
Ama bu bileşenler arasında nasıl bir bağlantı kurulacağını anlayamıyorum.
Cevap #1
Duruma bağlı, eğer bir kardeşten diğerine çağrı yapıyorsanız, o zaman yöntemi her ikisinin de kullanacağı bir servise soyutlarsınız:
Hizmet
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class MruanovaService {
private subject = null;
data$ = null;
constructor(private httpClient: HttpClient) {
this.init();
}
init() {
this.subject = new BehaviorSubject<any>({});
this.data$ = this.subject.asObservable();
}
getProjects(): void {
const url = 'https://246gg84zg8.execute-api.us-west- 2.amazonaws.com/prod/projects/';
const headers = new HttpHeaders({ 'Content-Type': 'text/plain; charset=utf-8' });
const options = { headers: headers };
const value = this.httpClient.get(url, options); // HTTP GET
this.subject.next(value);
}
}
bileşen
import { Component, OnInit, Output, EventEmitter } from '@angular/core';
import { MruanovaService } from 'src/app/services/Mruanova.service';
@Component({
selector: 'app-mruanova',
templateUrl: './mruanova.component.html',
styleUrls: ['./mruanova.component.scss']
})
export class MruanovaComponent implements OnInit {
projects = null;
constructor(public MruanovaService: MruanovaService) {}
ngOnInit() {
this.MruanovaService.getProjects();
this.MruanovaService.data$.subscribe(res => {
if (res.subscribe) {
res.subscribe(response => {
this.projects = response.Items.sort(function (a, b) {
return parseFloat(a.ID) - parseFloat(b.ID);
});
}, r => {
console.log('ERROR', r);
});
}
});
}
}
