Попробуйте использовать оператор Элвиса в цикле отображения:
<tr *ngFor="let value of default">
<td>{{ value?.userId }}</td>
<td>{{ value?.title }}</td>
</tr>
?.
после item
(в данном случае value
) гарантирует, что Angular не будет пытаться отрисовать data , пока данные не отобразятся, поэтому value?.userId
будет работать там, где value.userId
потерпит неудачу, так как значение не определено при визуализации представления, а Angular не знает атрибута .userID
до завершения выборки по которому уже выкинута ошибка.
Кроме того, при использовании http и result.json () вы получите один массив ваших объектов данных, поэтому вам не нужно использовать его как object []; Я также был бы склонен печатать значения как любые [] и посмотреть, не сработает ли это.
public values: any[];
constructor(private http: Http) {
this.http.get('http://192.168.10.100/api/values').subscribe(result => { //Calling the web api here as json
this.values = result.json();
}, error => console.error(error));
}
Передайте свойство в конструкторе для простых сценариев.
Для большего количества complexe случаев используйте интерфейс контейнера МОК, обеспечьте реализацию по умолчанию, но сделайте это достаточно простым так, чтобы это могло быть реализовано с любым contianer.
CommonServiceLocator является таким видом интерфейса.
Редактирование:
Я продвинул бы другой дизайн теперь, когда сделает CommonServiceLocator бесполезным, и сделал бы общий опыт Ваших пользователей библиотеки лучше:
Вы выбираете контейнер МОК, который имеет все необходимые функции Ваших внутренних требований библиотеки и Вас ILMerge это как внутренние так, чтобы Ваши пользователи библиотеки не видели его. Пользователи не должны знать, что библиотека использует контейнер.
Необходимо затем обеспечить две основных точки расширения: Конфигурация - способ обеспечить пользовательскую реализацию зависимостей (например, Регистратор...) Фабрики - если Ваша библиотека должна инстанцировать объекта пользователей, позвольте указывать фабрику так, чтобы Ваши пользователи могли сцепить его. Таким образом, они могут использовать свой собственный контейнер, чтобы инстанцировать и ввести их объекты.
Я сделал два полных сообщения в блоге об этом дизайне:
Если количество зависимостей является довольно небольшим, можно просто передать их в способом конструктора. Тем путем у Ваших потребителей есть полный выбор по тому, как создать Ваши объекты.
Свойства/методы set или пользовательские объекты инициализации являются альтернативными возможностями и покрывают другие области в спектре дизайна.