Угловой ответ HttpClient всегда возвращает пустой объект [дубликат]

В Java, когда оператор «==» используется для сравнения двух объектов, он проверяет, ссылаются ли объекты на одно и то же место в памяти. Другими словами, он проверяет, являются ли имена двух объектов в основном ссылками на одно и то же место в памяти.

Класс Java String фактически переопределяет реализацию equals () по умолчанию в классе Object и переопределяет этот метод, чтобы он проверял только значения строк, а не их местоположения в памяти. Это означает, что если вы вызываете метод equals () для сравнения двух объектов String, то, пока действительная последовательность символов равна, оба объекта считаются равными.

Оператор == проверяет, являются ли две строки точно одним и тем же объектом.

Метод .equals() проверяет, имеют ли две строки одно и то же значение.

4
задан Kirk Larkin 9 November 2017 в 13:52
поделиться

4 ответа

Вы можете указать возвращаемый тип, используя интерфейс, класс и т. д. Например, вы можете использовать что-то вроде следующего:

return this.http.get<Sidebar>('http://localhost:3000/sidebar/edit-sidebar');

В качестве примера можно определить боковую панель как:

interface Sidebar {
    _id: string;
    content: string;
}

См. . Выделение ответа из угловых документов для получения дополнительной информации:

... TypeScript правильно сообщит, что Объект, возвращающийся из HTTP, не имеет свойства результатов. Это связано с тем, что в то время как HttpClient проанализировал ответ JSON в Object, он не знает, какая форма этого объекта.

10
ответ дан Kirk Larkin 16 August 2018 в 04:23
поделиться
  • 1
    если вы не упоминали <Type>, то он принимает значение any как возвращаемый по умолчанию. – Ramesh Rajendran 9 November 2017 в 13:53

Попробуйте добавить боковую панель интерфейса к вашему методу подписки:

this.sidebarService.getSidebar().subscribe((sidebar: Sidebar) => {
    this.sidebar = sidebar.content;
});

interface Sidebar {
    _id?: string;
    content?: string;
}
0
ответ дан Dmitry Grinko 16 August 2018 в 04:23
поделиться

альтернативное решение:

this.sidebar = sidebar["content"];

, которое вернет значение в HttpClient, HttpClient автоматически проанализирует ответ JSON на объект, а форма этого объекта неизвестна, поэтому TypScript показывает эту ошибку

6
ответ дан Fateh Mohamed 16 August 2018 в 04:23
поделиться

Вы можете назначить переменную (боковую панель) интерфейса для явного указания того, что она получит или назначит ей, чтобы она не выдавала ошибку времени компиляции.

this.sidebarService.getSidebar().subscribe((sidebar: any) => {
                        this.sidebar = sidebar.content; 
                    });
4
ответ дан Mayank Singh 16 August 2018 в 04:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: