我有一个基类:
export class ClientBase {
constructor(private uri: string, private httpClient: HttpClient) { }
// My Various Methods
}
我有几个从ClientBase派生的类
例如:
@Injectable()
export class GizmoService extends ClientBase {
constructor(private http: HttpClient)
{
super(environment.gizmoUri, http);
}
};
因此,在GizmoService中,我想在一种特殊情况下专门传递Uri。
所以理想情况下,我想做这样的事情:
@Injectable()
export class GizmoService extends ClientBase {
constructor(private http: HttpClient, uri?: string)
{
if (!uri) uri = environment.gizmoUri;
super(uri, http);
}
};
但是我收到一条错误消息,说明super必须是构造函数中的第一个调用。
如何解决此问题而不必对现有代码库进行大量更改? (即,不更改每次调用以传递2个参数)
答案 0 :(得分:1)
您始终可以为uri
参数设置默认值。
@Injectable()
export class GizmoService extends ClientBase {
constructor(private http: HttpClient, uri: string = environment.gizmoUri) {
super(uri, http);
}
}