1
00:00:00,809 --> 00:00:04,431
[MUSIC]

2
00:00:04,431 --> 00:00:08,086
Связь между клиентом и сервером никогда не делается.

3
00:00:08,086 --> 00:00:10,326
Перефразируя знаменитую пословицу,

4
00:00:10,326 --> 00:00:14,168
существует много колчана между клиентом и сервером.

5
00:00:14,168 --> 00:00:17,226
Итак, как мы справляемся с ошибками, когда они возникают,

6
00:00:17,226 --> 00:00:21,415
, когда мы общаемся между клиентом и сервером?

7
00:00:21,415 --> 00:00:26,008
Давайте поговорим об этом в этом упражнении.

8
00:00:26,008 --> 00:00:29,931
Когда сервер генерирует ответ или HTTP-клиент

9
00:00:29,931 --> 00:00:35,110
при общении с сервером обнаруживает ошибку, а затем генерирует

10
00:00:35,110 --> 00:00:40,390
ответ об ошибке, он доставляется в виде ответа об ошибке HTTP.

11
00:00:40,390 --> 00:00:43,760
Теперь, этот ответ, мы хотим, чтобы иметь возможность обрабатывать его и

12
00:00:43,760 --> 00:00:48,840
затем превратить это в строку сообщения ответа, который

13
00:00:48,840 --> 00:00:54,790
может быть доставлен клиенту, чтобы клиент мог отобразить это на экране.

14
00:00:54,790 --> 00:00:56,727
Таким образом, чтобы мы могли сделать это,

15
00:00:56,727 --> 00:01:02,727
мы создадим новую службу с именем процесса HTTP-сообщение в этом, это папка.

16
00:01:02,727 --> 00:01:08,663
Для этого в командной строке введите ng,

17
00:01:08,663 --> 00:01:15,174
g services/ProcessHTTPMsg,

18
00:01:15,174 --> 00:01:22,265
и создайте службу ProcessHTTPMsg.

19
00:01:22,265 --> 00:01:26,178
Теперь, как только сервис будет создан, мы продолжим и

20
00:01:26,178 --> 00:01:27,921
добавим его в модуль приложения.

21
00:01:27,921 --> 00:01:36,240
А затем добавим метод в сервис ProcessHTTPMsg.

22
00:01:36,240 --> 00:01:40,068
Теперь, когда мы создали сервис ProcessHTTPMsg,

23
00:01:40,068 --> 00:01:44,653
давайте продолжим, а затем добавим его в файл app.module.ts.

24
00:01:44,653 --> 00:01:52,993
Таким образом, перейдя к файлу app.module.ts,

25
00:01:52,993 --> 00:02:02,353
позвольте мне импортировать службу ProcessHTTPMsg,

26
00:02:06,191 --> 00:02:15,255
От './службы/процесс-httpmsg.service '.

27
00:02:15,255 --> 00:02:22,945
Так как только это импортируется, то мы сможем использовать это в нашем приложении.

28
00:02:22,945 --> 00:02:26,463
Так что давайте продолжим и добавим это в наших провайдерах.

29
00:02:26,463 --> 00:02:29,216
Таким образом, зайдя в наших провайдеров,

30
00:02:29,216 --> 00:02:34,952
позвольте мне добавить в ProcessHTTPMsgService в провайдеров.

31
00:02:34,952 --> 00:02:38,429
Первое, что мы сделаем, это включить новый метод в

32
00:02:38,429 --> 00:02:41,618
ProcessHTTPMsgService, называемый handle erlors,

33
00:02:41,618 --> 00:02:45,105
, который будет заботиться о обработке ошибок, когда они возникают.

34
00:02:45,105 --> 00:02:51,220
И тогда мы будем использовать их в сервисах, где мы получаем доступ к серверу.

35
00:02:51,220 --> 00:02:54,546
Чтобы начать, давайте сначала импортировать,

36
00:02:57,928 --> 00:03:03,969
throwError from, rxjs,

37
00:03:03,969 --> 00:03:09,766
, и это помогает нам бросать ошибку всякий раз, когда это возникает.

38
00:03:12,005 --> 00:03:20,787
И затем мы импортируем HttpErrorResponse из,

39
00:03:23,316 --> 00:03:28,193
угловой/общего/http.

40
00:03:30,926 --> 00:03:35,632
Тогда мы приступим к разработке метода handleError, и

41
00:03:35,632 --> 00:03:41,257
это принимает, в качестве параметра, ошибку, которая может быть ответом,

42
00:03:41,257 --> 00:03:45,042
, который является ответом на ошибку с сервера,

43
00:03:45,042 --> 00:03:48,746
или любой другой причиной возникновения ошибки.

44
00:03:48,746 --> 00:03:54,095
Итак, в рамках этого метода handleError, что мы должны делать?

45
00:03:54,095 --> 00:04:02,195
Давайте попробуем построить сообщение, которое суммирует, что такое ошибка.

46
00:04:02,195 --> 00:04:06,389
Таким образом, мы включим здесь новую строковую переменную.

47
00:04:07,880 --> 00:04:13,080
Если error.error является экземпляром

48
00:04:13,080 --> 00:04:18,699
ErrorEvent, поэтому если это событие происходит,

49
00:04:18,699 --> 00:04:24,170
, то error.message будет содержать информацию.

50
00:04:24,170 --> 00:04:26,695
Таким образом, мы установим сообщение об ошибке

51
00:04:26,695 --> 00:04:35,630
error.message.

52
00:04:35,630 --> 00:04:42,630
Если это не так, то это означает, что это происходит со стороны сервера,

53
00:04:42,630 --> 00:04:48,500
и поэтому в этом случае сообщение об ошибке строится, говоря равным обратным кавыкам,

54
00:04:48,500 --> 00:04:55,940
обратите внимание на обратные кавычки здесь, а затем $ {error.status}.

55
00:04:55,940 --> 00:04:59,450
Таким образом, мы извлекаем информацию о состоянии оттуда.

56
00:04:59,450 --> 00:05:03,956
И затем, - error.statusText,

57
00:05:03,956 --> 00:05:07,710
, если statusText существует, или

58
00:05:07,710 --> 00:05:12,226
, которая будет пустой строкой.

59
00:05:12,226 --> 00:05:17,691
И тогда мы также включим сам error.error,

60
00:05:17,691 --> 00:05:23,866
сам полный объект ошибки, прямо там в строке.

61
00:05:23,866 --> 00:05:29,320
И затем используйте это как наше сообщение об ошибке.

62
00:05:29,320 --> 00:05:33,484
Теперь, как только у нас есть сообщение об ошибке,

63
00:05:33,484 --> 00:05:38,169
, то мы сможем использовать throwError для

64
00:05:38,169 --> 00:05:43,520
вернуть ошибку наблюдаемую в нашем приложении.

65
00:05:44,940 --> 00:05:48,960
Так что это означает, что это бросает ошибку в этот момент,

66
00:05:48,960 --> 00:05:51,370
с сообщением об ошибке, включенным там.

67
00:05:51,370 --> 00:05:56,549
Таким образом, эта строка сообщения об ошибке построена на основе информации

68
00:05:56,549 --> 00:06:02,243
, которую мы получаем здесь, либо потому, что серверная сторона ответила с ошибкой, либо

69
00:06:02,243 --> 00:06:05,111
ошибка может быть из других причин.

70
00:06:05,111 --> 00:06:09,606
Поэтому в любом случае мы построим сообщение об ошибке, а затем вернем его.

71
00:06:09,606 --> 00:06:12,493
Теперь, где мы используем эту ошибку дескриптора?

72
00:06:12,493 --> 00:06:17,549
Теперь, в рамках наших услуг, например файл dishservice.ts,

73
00:06:17,549 --> 00:06:22,866
мы видели, что раньше, когда мы сказали, что это HTTP получить, а затем мы просто сказали карту,

74
00:06:22,866 --> 00:06:28,020
, а затем предположили, что ответ всегда положительный ответ.

75
00:06:28,020 --> 00:06:31,580
Но предположим, что их ответ не положительный, и

76
00:06:31,580 --> 00:06:37,330
тогда он возвращает ошибку, тогда нам нужно поймать эту ошибку.

77
00:06:37,330 --> 00:06:44,180
Чтобы помочь нам в этом, мы импортируем оператор catchError из rxjs,

78
00:06:44,180 --> 00:06:50,690
, а затем мы также импортируем ProcessHTTPMsgService

79
00:06:50,690 --> 00:06:56,001
, который мы только что создали ранее, в

80
00:06:56,001 --> 00:07:01,860
наш сервис-блюдо, чтобы мы могли использовать метод ошибки дескриптора оттуда.

81
00:07:01,860 --> 00:07:08,060
Таким образом, мы импортируем это из./процесс-httpmsg.service.

82
00:07:08,060 --> 00:07:12,670
А затем, перейдя к конструктору,

83
00:07:12,670 --> 00:07:18,690
, мы теперь вводим процесс HTTP-сообщения

84
00:07:18,690 --> 00:07:22,910
в конструктор вместе с HTTP-клиентом.

85
00:07:22,910 --> 00:07:27,080
Чтобы мы могли использовать этот сервис,

86
00:07:27,080 --> 00:07:32,280
особенно метод обработки ошибок сервиса для обработки ошибок

87
00:07:32,280 --> 00:07:37,710
, которые возвращаются нашим HTTP-клиентом там.

88
00:07:38,930 --> 00:07:43,009
Теперь, как только мы настроили конструктор,

89
00:07:43,009 --> 00:07:46,988
, то для обработки ошибки в методе getDises для примера

90
00:07:46,988 --> 00:07:50,980
, мы будем передавать метод catchErrors.

91
00:07:50,980 --> 00:07:54,762
А затем вызовите метод handleError после

92
00:07:54,762 --> 00:08:00,446
этого.processHTTPMsgService в методе catchError.

93
00:08:00,446 --> 00:08:07,817
Таким образом, когда HTTP-клиент возвращает ошибку, это будет обработано и

94
00:08:07,817 --> 00:08:12,875
соответствующее сообщение об ошибке будет извлечено.

95
00:08:12,875 --> 00:08:16,879
И тогда он в конечном итоге выбросит ошибку через

96
00:08:16,879 --> 00:08:20,112
метод handleError в этот момент.

97
00:08:20,112 --> 00:08:24,108
Аналогично, давайте сделаем то же самое с методами getDish и

98
00:08:24,108 --> 00:08:27,710
getFeatureDish.

99
00:08:27,710 --> 00:08:31,710
Теперь, когда дело доходит до метода getDish ids,

100
00:08:31,710 --> 00:08:36,200
, поскольку метод getDish ids использует метод getDish,.

101
00:08:36,200 --> 00:08:40,670
Поэтому нам не нужно явно вызывать handleError, потому что если возникнет какая-либо ошибка

102
00:08:40,670 --> 00:08:45,560
метод getDishes уже преобразует эту ошибку в строку ошибки.

103
00:08:45,560 --> 00:08:50,930
Поэтому нам просто нужно поймать ошибку, а затем вернуть ошибку из getDish Ids.

104
00:08:50,930 --> 00:08:55,020
Обычно мы даже не подошли бы к этому моменту, если возникает ошибка, потому что

105
00:08:55,020 --> 00:09:00,250
метод getDishes обрабатывал бы ошибку соответствующим образом в этот момент.

106
00:09:00,250 --> 00:09:06,880
Таким образом, как только мы настроили блюдо должным образом,

107
00:09:06,880 --> 00:09:12,600
, то мы сможем затем использовать метод catchError

108
00:09:12,600 --> 00:09:17,283
для устранения ошибок, которые возникают.

109
00:09:17,283 --> 00:09:23,647
Теперь, когда мы обновили наш сервис, чтобы иметь возможность справляться с ошибками.

110
00:09:23,647 --> 00:09:27,486
Как мы справляемся с этим в рамках нашего компонента?

111
00:09:27,486 --> 00:09:31,309
Так внутри компонента, так, например, когда мы переходим к компоненту меню.

112
00:09:31,309 --> 00:09:34,557
Мы понимаем, что когда мы делаем подписку,

113
00:09:34,557 --> 00:09:38,280
мы ожидали, что блюда будут доставлены нам.

114
00:09:38,280 --> 00:09:40,750
Теперь, возможно, что инструкция блюд,

115
00:09:40,750 --> 00:09:44,210
ошибка будет доставлена наблюдаемым броском и

116
00:09:44,210 --> 00:09:47,430
, то это приводит к тому, что сообщение об ошибке будет доступно нам.

117
00:09:47,430 --> 00:09:52,540
Итак, чтобы справиться с этой ситуацией, я введу новую переменную

118
00:09:52,540 --> 00:09:59,088
под названием errMess в компонент меню, который имеет тип string.

119
00:09:59,088 --> 00:10:05,647
И тогда сам метод subscribe предоставляет способ обработки ошибок.

120
00:10:05,647 --> 00:10:12,315
Таким образом, метод подписки, прямо сейчас мы указали только одну функцию здесь.

121
00:10:12,315 --> 00:10:17,142
Мы также можем указать вторую функцию, которая будет вызываться

122
00:10:17,142 --> 00:10:21,020
при появлении ошибки.

123
00:10:21,020 --> 00:10:26,000
Таким образом, в этом случае я могу предоставить вторую функцию ошибки, говоря

124
00:10:26,000 --> 00:10:30,460
errMess, которая является значением, возвращаемым в

125
00:10:30,460 --> 00:10:35,630
, когда наблюдаемый бросок выполняется dishService.

126
00:10:35,630 --> 00:10:43,850
Так что в этом случае я бы сказал это.errMess = <any>errMess, и все.

127
00:10:43,850 --> 00:10:48,709
Итак, вот что происходит, когда наблюдаемый

128
00:10:48,709 --> 00:10:53,082
возвращается dishService является Value,

129
00:10:53,082 --> 00:10:57,707
, то это будет обрабатываться первой частью.

130
00:10:57,707 --> 00:11:01,434
Если наблюдаемый возвращается с наблюдаемым броском,

131
00:11:01,434 --> 00:11:03,874
, то эта функция будет выполнена.

132
00:11:03,874 --> 00:11:07,689
И в этой функции мы берем сообщение об ошибке и

133
00:11:07,689 --> 00:11:12,949
, а затем захватывая это сообщение об ошибке в эту строку errMess, которая у нас есть здесь.

134
00:11:12,949 --> 00:11:16,776
Итак, теперь у нас есть сообщение об ошибке, поэтому

135
00:11:16,776 --> 00:11:21,940
мы можем отобразить это сообщение об ошибке в представлении этого компонента меню.

136
00:11:21,940 --> 00:11:25,910
Итак, как мы отображаем это в представлении компонентов меню?

137
00:11:25,910 --> 00:11:33,700
Итак, идя к шаблону компонентов меню файла, здесь мы видим, что если блюда не null,

138
00:11:33,700 --> 00:11:39,200
то мы показываем меню со всеми блюдами.

139
00:11:39,200 --> 00:11:46,550
Если блюда равны нулю, то этот счетчик отображается там.

140
00:11:46,550 --> 00:11:50,903
Теперь мы добавим еще один здесь,

141
00:11:50,903 --> 00:11:55,107
, даже если errMess, что у нас есть,

142
00:11:55,107 --> 00:11:59,912
переменная, не null, то также

143
00:11:59,912 --> 00:12:04,866
прядильщик должен быть скрыт, а затем,

144
00:12:04,866 --> 00:12:10,300
, наконец, добавить еще один div с ngIf.

145
00:12:10,300 --> 00:12:15,077
Итак, что это делает, так это то, что это последнее погружение будет отображаться в

146
00:12:15,077 --> 00:12:19,470
, если есть ошибки, и сообщение об ошибке.

147
00:12:19,470 --> 00:12:23,345
Строка ErrMess настроена на сообщение об ошибке.

148
00:12:23,345 --> 00:12:29,648
Так что в этом случае мы просто скажем ошибку h2,

149
00:12:29,648 --> 00:12:35,962
, а затем я просто собираюсь отобразить эту строку как,

150
00:12:41,159 --> 00:12:46,586
Строка в представлении там, вот и все.

151
00:12:46,586 --> 00:12:50,539
Вы можете сделать более сложный способ отображения сообщения об ошибке, если вы так

152
00:12:50,539 --> 00:12:51,081
хотите.

153
00:12:51,081 --> 00:12:54,118
Но все, что я собираюсь сделать, это если есть ошибка,

154
00:12:54,118 --> 00:12:58,280
я просто покажу ошибку на экране, а затем отобразит errMess.

155
00:12:58,280 --> 00:13:04,283
Вы даже можете стиль, изменив цвет на красный и

156
00:13:04,283 --> 00:13:09,875
так далее, но я просто оставлю его там.

157
00:13:09,875 --> 00:13:16,477
Таким образом, с этим, мы в конечном итоге отобразим сообщение об ошибке в представлении здесь.

158
00:13:16,477 --> 00:13:21,471
Та же процедура также может быть использована с компонентом блюда и

159
00:13:21,471 --> 00:13:26,764
также домашним компонентом, где мы получаем доступ к блюду.

160
00:13:26,764 --> 00:13:32,692
Так что, идя к блюду, я буду делать точно то же самое.

161
00:13:32,692 --> 00:13:42,680
поэтому в компоненте блюда я включу, ErrMess здесь.

162
00:13:42,680 --> 00:13:45,654
И затем прямо здесь, в рамках подписки,

163
00:13:45,654 --> 00:13:49,190
это то, где мы получаем стоимость блюда.

164
00:13:49,190 --> 00:13:50,260
Таким образом, первая часть

165
00:13:50,260 --> 00:13:55,770
то, что мы уже включили, будет вызвана, если наблюдаемый возвращает значение.

166
00:13:55,770 --> 00:14:00,770
Но если он не возвращает значение, то нам нужно иметь дело с сообщением об ошибке.

167
00:14:00,770 --> 00:14:04,360
И мы будем использовать точно ту же функцию сообщения об ошибке

168
00:14:04,360 --> 00:14:09,620
, что мы определили ранее в компоненте меню.

169
00:14:09,620 --> 00:14:15,926
Итак, скажем, что это.errMess

170
00:14:15,926 --> 00:14:20,791
= Ermess здесь.

171
00:14:20,791 --> 00:14:26,971
Вот и все, поэтому моя составляющая блюда теперь обновлена.

172
00:14:26,971 --> 00:14:31,521
Поэтому мне нужно обновить файл шаблона компонента блюдо.

173
00:14:31,521 --> 00:14:34,317
Итак, идя в файл шаблона,

174
00:14:34,317 --> 00:14:40,240
мы видим, что мы будем отображать блюдо, если блюдо не равно нулю.

175
00:14:40,240 --> 00:14:45,034
А затем внизу, мы обрабатываем ситуацию

176
00:14:45,034 --> 00:14:49,326
, где мы покажем прядильщик, если блюдо равно нулю.

177
00:14:49,326 --> 00:15:00,235
Так что позвольте мне добавить также, если сообщение об ошибке не равно нулю, то я должен отображать сообщение об ошибке, а не блюдо здесь, верно?

178
00:15:00,235 --> 00:15:03,827
Итак, позвольте мне продолжить и

179
00:15:03,827 --> 00:15:10,075
скопировать код из компонента меню.

180
00:15:10,075 --> 00:15:12,790
Я собираюсь использовать точно такой же код для

181
00:15:12,790 --> 00:15:16,171
файл шаблона компонентов детали блюда.

182
00:15:16,171 --> 00:15:19,435
Итак, вот здесь.

183
00:15:19,435 --> 00:15:22,823
Позвольте мне продолжить и вставить этот код здесь.

184
00:15:22,823 --> 00:15:26,130
Таким образом, мы видим, что если errMess не равно null,

185
00:15:26,130 --> 00:15:30,838
, то эта ошибка будет отображаться в представлении там.

186
00:15:30,838 --> 00:15:31,938
Теперь то же самое,

187
00:15:31,938 --> 00:15:36,502
идя к домашнему компоненту, мы должны пройти ту же процедуру.

188
00:15:36,502 --> 00:15:40,688
Теперь в рамках домашней составляющей, конечно, у нас есть блюдо, продвижение и лидер.

189
00:15:40,688 --> 00:15:47,625
Поэтому я собираюсь определить отдельные строки для

190
00:15:47,625 --> 00:15:53,169
каждого из них, потому что ошибка может возникнуть из любого из трех.

191
00:15:53,169 --> 00:15:57,927
Сейчас мы имеем дело только с блюдом, извлекаемым со стороны сервера.

192
00:15:57,927 --> 00:16:04,000
Остальные два я ожидаю, что вы сделаете это в рамках, Заключительного задания.

193
00:16:04,000 --> 00:16:10,252
Так что мы, я скажу блюдо errmess строки, а затем спустимся в код здесь.

194
00:16:10,252 --> 00:16:13,630
И в коде тут

195
00:16:13,630 --> 00:16:18,146
мы просто скажем errmess.

196
00:16:18,146 --> 00:16:23,925
Это блюдо errmess = любой

197
00:16:23,925 --> 00:16:30,130
errmess, вот и все.

198
00:16:30,130 --> 00:16:35,036
И аналогичным образом обновите файлы шаблонов домашних компонентов.

199
00:16:35,036 --> 00:16:40,215
И идя в файл шаблона домашних компонентов,

200
00:16:40,215 --> 00:16:45,392
мы видим, что у нас есть ящик для посуды отображается там,

201
00:16:45,392 --> 00:16:50,461
так что теперь для этого я должен сказать или блюдо errMess.

202
00:16:50,461 --> 00:16:55,738
И затем, ниже, я включу код

203
00:16:55,738 --> 00:17:00,648
, который я скопировал из компонента меню, и

204
00:17:00,648 --> 00:17:04,600
затем я обновляю его до блюда ErrMess здесь.

205
00:17:04,600 --> 00:17:11,957
А также обновите это до dishErrMess здесь, вот и все.

206
00:17:11,957 --> 00:17:14,113
Давайте сохраним изменения.

207
00:17:14,113 --> 00:17:18,823
Перейдя в браузер, вы видите, что все работает как раньше.

208
00:17:18,823 --> 00:17:24,249
Главная, компонент меню, а также компонент детали блюда без каких-либо проблем.

209
00:17:24,249 --> 00:17:27,498
Теперь вопрос в том, как мы вызываем ошибки?

210
00:17:27,498 --> 00:17:35,566
Чтобы вызвать ошибки, один из возможных способов, с помощью которых мы можем справиться с этой проблемой, - мы идем и

211
00:17:35,566 --> 00:17:40,961
искать несуществующую информацию с сервера.

212
00:17:40,961 --> 00:17:45,865
Позвольте мне пойти на блюдо, а затем вызвать

213
00:17:45,865 --> 00:17:51,240
мою первую проблему в dishService здесь.

214
00:17:51,240 --> 00:17:55,460
Так что для рекомендуемого блюда вместо блюд, позвольте мне сделать ошибку и

215
00:17:55,460 --> 00:17:59,470
сказать dischees, а затем сохранить изменения.

216
00:17:59,470 --> 00:18:04,160
Очевидно, что это означает, что этот URL-адрес не существует.

217
00:18:04,160 --> 00:18:07,482
Итак, что произойдет, если он получит доступ к серверу?

218
00:18:07,482 --> 00:18:11,514
Перейдя в браузер, когда мы теперь прокручиваем,

219
00:18:11,514 --> 00:18:16,504
вы видите, что блюдо здесь не отображается.

220
00:18:16,504 --> 00:18:19,570
Здесь написано, что ошибка 404 не найдена.

221
00:18:19,570 --> 00:18:24,170
Это потому, что мы пытаемся получить доступ к информации о блюде на

222
00:18:24,170 --> 00:18:28,424
URL dishees, который не существует на стороне сервера.

223
00:18:28,424 --> 00:18:32,289
Таким образом, вы видите, как здесь отображается сообщение об ошибке.

224
00:18:32,289 --> 00:18:36,172
Конечно, вы можете быть немного более фантастичным и делать больше работы вокруг этого, а затем

225
00:18:36,172 --> 00:18:39,460
отображать сообщение об ошибке более значимым образом.

226
00:18:39,460 --> 00:18:44,750
Но основной принцип выделен здесь, говоря, что вы

227
00:18:44,750 --> 00:18:50,357
можете показать сообщение об ошибке, если что-то не выполняется должным образом

228
00:18:50,357 --> 00:18:56,194
, когда вы пытаетесь получить доступ к информации со стороны вашего сервера.

229
00:18:56,194 --> 00:19:02,373
Конечно, так что это искусственно созданная ошибка в моем приложении.

230
00:19:02,373 --> 00:19:07,020
Чтобы вызвать еще одну ошибку, я пошел в окно терминала и

231
00:19:07,020 --> 00:19:12,295
затем выключил сервер, чтобы увидеть, что мое угловое приложение будет делать в этом случае.

232
00:19:12,295 --> 00:19:15,267
Итак, после выключения сервера,

233
00:19:15,267 --> 00:19:20,330
давайте посмотрим, что домашний компонент будет отображаться в своем представлении.

234
00:19:21,830 --> 00:19:26,620
Итак, перейдя к домашнему компоненту, мы теперь видим, что, поскольку мое приложение Angular

235
00:19:26,620 --> 00:19:31,330
не может получить доступ к серверу, это снова вызвало ошибку.

236
00:19:31,330 --> 00:19:37,450
И затем он показывает эту строку, чтобы указать, что произошла некоторая ошибка.

237
00:19:37,450 --> 00:19:40,560
Конечно, это загадочная строка,

238
00:19:40,560 --> 00:19:45,010
не передает ничего значимого о том, что является источником ошибки.

239
00:19:45,010 --> 00:19:52,420
Но это все, что мы могли получить, пытаясь получить доступ к серверу в этом приложении.

240
00:19:52,420 --> 00:19:56,260
То же самое, если я перейду в меню, вы увидите то же самое, что и

241
00:19:56,260 --> 00:19:59,010
, потому что сервер недоступен, и поэтому

242
00:19:59,010 --> 00:20:02,150
информация о блюде не может быть получена с сервера.

243
00:20:02,150 --> 00:20:05,110
С этим мы завершаем это упражнение.

244
00:20:05,110 --> 00:20:07,660
В этом упражнении мы научились справляться с ошибками

245
00:20:07,660 --> 00:20:13,040
, возникающими во время связи с клиентским сервером в нашем угловом приложении.

246
00:20:13,040 --> 00:20:18,333
Это хорошее время для вас, чтобы сделать git commit с сообщением http часть вторая.

247
00:20:18,333 --> 00:20:24,225
[МУЗЫКА]