Angular: Как назначить List, возвращаемый Spring Model, для Angular Object? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть требование, где я настраиваю List объектов как model attribute в spring controller, и мне нужно назначить объект в angular .ts файле.

Вот что мне нужно сделать. Мой объект Java:

public class Lab {
   //some members of the class
}

Вот как я добавляю его к Model:

public String getIndexPage(@RequestParam(value="val") List<Lab> labs, Model model){
    model.addAttribute("val", labs);
    return "index.html";
}

Соответствующий объект в Angular, названный внутри lab.ts:

export class Lab {
// same variables as in java
}

А вот файл component.ts, где мне нужно присвоить список val:

export class VideoFormComponent implements OnInit {

  selectedValues: Lab[] = new Array(4);

  ngOnInit() {

     this.selectedVideos = "${model.val}"; //assignment statement
  }

Но вот где я получаю сообщение об ошибке:

Type '"${model.val}"' is not assignable to type 'Lab[]'

Как правильно использовать этот список в файле сценария?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

"${model.val}" это просто строка в Typescript.

Если model.val - это массив объектов, имеющих форму Lab[], вы можете сделать this.selectedVideos = <Lab[]>model.val.

Если model.val - это массив, уже набранный как Lab[], вы можете просто сказать this.selectedVideos = model.val

Я не уверен, что вы пытаетесь сделать, но я предполагаю, что вы используете Angular HttpClient или websocket или что-то еще, чтобы сначала получить данные от конечной точки сервера к клиенту.

0 голосов
/ 04 мая 2018

Как вы предоставляете данные model для углового компонента? Если ваши данные поступают из запроса Http, вы должны создать службу, которая выполняет запрос, а затем вызвать ее из вашего компонента и установить результат в переменной selectedValues. Или, если вы предоставляете данные в качестве входных данных для компонента, вы должны использовать декоратор @Input. В любом случае данные предоставляются вне компонента. Из того, что я прочитал, вы пытаетесь использовать объект model с атрибутом val, но вы его нигде не предоставляете.

...