如果构造函数中存在值,为什么我会得到未定义?

Why I get undefined if value is present in constructor?

存在变量 findbyobjectidlatest$:

的服务
@Injectable({
  providedIn: "root",
})
export class ConstructionObjectsDataService {    
  constructor(
    private httpClient: HttpClient,
    private parametersService: ParametersService
  ) {
    console.log(this.parametersService.findbyobjectidlatestFilter);
  }

    findbyobjectidlatest$ = this.httpClient.get<any>(
    `${environment.apiUrl}/${this.URL_PATH}/findbyobjectidlatest?objectid=${this.parametersService.findbyobjectidlatestFilter.parameters.objectid}`
  );

}

为什么值在构造函数中显示:console.log(this.parametersService.findbyobjectidlatestFilter); 为:

{ parameters: {objectid: "08438F2E01384371BFED6E282950C054"}}

但是在http客户端请求中未定义:

${this.parametersService.findbyobjectidlatestFilter.parameters.objectid}

如果移动构造函数中的所有变量,我可以在构造函数中获取对象:

但为什么我仍然未定义:

console.log(this.parametersService.findbyobjectidlatestFilter.parameters.objectid);

成员 findbyobjectidlatest$ 在构造函数之前初始化

您可以按照以下步骤进行

@Injectable({
  providedIn: "root",
})
export class ConstructionObjectsDataService {    

  constructor(
    private httpClient: HttpClient,
    private parametersService: ParametersService
  ) {
  }

  getQuery() {
    const vals = this.parametersService.findbyobjectidlatestFilter;
    console.log(vals);
    const parameters = vals.parameters;
    console.log(parameters);
    const objectid = parameters.objectid;
    console.log(objectid);

    const apiUrl = `${environment.apiUrl}`;
    const URL_PATH = `${this.URL_PATH}`;
    const objectid = `/findbyobjectidlatest?objectid=${objectid}`;
    const url = apiUrl + URL_PATH + objectid ;
    console.log(apiUrl, URL_PATH, objectid);

    return this.httpClient.get<any>(url);
  }
}

如果 parametersService 或其他参数在调用构造函数时尚未准备好,您可以从方法中获取查询