【Angular】상속 클래스의 async 메소드로 부모 클래스의 메소드를 호출하려고 하면 무한 루프한다. . .
5875 단어 AngularedgeTypeScriptasync
현상
상속 클래스에서, 부모 클래스의 메소드를 오버라이드(override) 하면 무한 루프 하게 되었다.
테스트 코드
app.service.ts
import { Injectable } from '@angular/core';
@Injectable()
export class AppService {
constructor() {}
async test() {
console.log('parent');
}
}
app-ex.service.ts
import { Injectable } from '@angular/core';
import { AppService } from './app.service';
@Injectable()
export class AppExService extends AppService {
constructor() {
super();
}
async test() {
console.log('child')
super.test();
}
}
app.component.ts
import { Component, OnInit } from '@angular/core';
import { AppExService } from './app-ex.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
title = 'extends-test';
constructor(private service: AppExService) {
}
ngOnInit() {
// 子クラスのメソッド呼び出し
this.service.test();
}
}
방문해보기
Chrome의 경우
Edge의 경우
로그를 보는 한은, 자신을 재귀 호출하고 있는 것 같다. . .
super의 참조가 this로 바뀌고 있는 것일까. . .
누군가의 해결 방법을 가르쳐 주었으면 좋겠다 ('Д`)
우선, 오버라이드(override)한 메소드가 아니면 부모 클래스의 메소드 부를 것 같기 때문에, 그래서 회피하기로 합니다. . .
Reference
이 문제에 관하여(【Angular】상속 클래스의 async 메소드로 부모 클래스의 메소드를 호출하려고 하면 무한 루프한다. . .), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/teracy164/items/1ec9437d7c05b815af30텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)