Как установить параметры с идентификатором, имеющим ключ и значение, и динамически передавать идентификатор при вызове API - PullRequest
0 голосов
/ 04 августа 2020

Я установил параметры с идентификатором, имеющим ключ и значения, которые необходимо передавать динамически, как они получены с сервера (например, s1, s3, s4 ... это имена датчиков, полученные от сервера), и я должен передать их имена датчиков динамически.

.service.ts

export class DashboardService {
  public sensors: any[];

  constructor(private http: HttpClient, private router: Router) {
  }

  sensorstart(tokenstr) {
    let httpOptions = {
      headers: new HttpHeaders({
        'Content-Type': 'application/json',
        'Authorization': 'Token ' + tokenstr
      }),
      params: new HttpParams().set('id', JSON.stringify(this.sensors.map(itm => itm.name)))
    };

    this.http.get(environment.apiUrl + '/api/sensors/start?' + this.id, httpOptions).subscribe(
      (senst: any[]) => {
        // localStorage.setItem("senst",JSON.stringify(senst));
        console.log('senst:', JSON.parse(localStorage.getItem('senst')));
        this.router.navigate(['/dashboard']);

      },
      err => {
        console.log('Error', err);
      }
    );

  }
}

.component.ts

 this.jammerstart();
--some code--

sensorstart(){
  this.senst=JSON.parse(localStorage.getItem("senst"));
console.log("senst",this.senst)
}

Но в console Отображается

{
    "status": true,
    "action": "sensor started"
}

Но я хочу показать имя датчика в действии, которое я вызвал динамически при вызове API.

{
    "status": true,
    "action": "sensor s3 started"
}

примечание: s3 - это то, что мы установили идентификатор, т.е. имя датчика (оно будет изменено в соответствии с API)

Как я могу передать значения идентификатора (имена датчиков s1, s2, s3 -) динамически при вызове API.

1 Ответ

0 голосов
/ 04 августа 2020

Вы должны использовать Object.keys

Я предполагал, что вы получили ответ от API, например, массив объекта

[
  {
    's1': 'some value 1',
    's2': 'some value 2',
    's3': 'some value 3'
  }
]

, тогда вы должны использовать это.

[{'s1': 'some value 1','s2': 'some value 2','s3': 'some value 3'}].forEach(element=> { console.log(Object.keys(element))});

и если у вас есть Object, используйте это.

{
  's1': 'some value 1',
  's2': 'some value 2',
  's3': 'some value 3'
}

Object.keys({'s1': 'some value 1','s2': 'some value 2','s3': 'some value 3'}).forEach(ele=> {console.log(ele);})
...