Size: a a a

Angular-universal-ru

2020 March 13

IF

Igor Filippov in Angular-universal-ru
А как теперь сетить куки? Раньше можно было обнулить _restrictedHeaders , но сейчас я что-то смотрю этот хак не работает
источник

IF

Igor Filippov in Angular-universal-ru
Хотя httpRequest.clone вроде не менялся последние 3 года, странно
источник

YG

Yurii Gavdan in Angular-universal-ru
Всем привет,
поскажите пожалуйста, кто сталкивался с такой проблемой?

Очень нужно обновлять мета тэги,
которые мы получаем по HTTP.

В результате чего,
для обычных страниц у меня все работает отлично с:
@ngx-meta/core
this.meta.setTitle(title);
this.meta.setTag(name, content);

И тут я дошел до главного,
я получаю данные через клиентский http сервис,
import { HttpClient } from '@angular/common/http';

в результате чего, я не могу обновлять мета теги на сервере,

и у нас есть некий пример с "angular-universal-starter", который использует
import { TransferHttpService } from '@gorniv/ngx-transfer-http';

итого получаем, внутри ApiService'а, теперь есть 2 провайдера,
далее я пытаюсь сделать вот так, менять динамически, уже в сущесвующем серисе:

@Injectable()
export class ApiService {
 private API_URL = '';
 constructor(
   @Inject(DOCUMENT) private document: Document,
   @Inject(PLATFORM_ID) private platformId: string,
   private http,
   private httpServer: TransferHttpService,
   private httpClient: HttpClient,
 ) {
  // вот здесь нужно получить универсальный http клиент
  // чтобы в DEV/SPA версии юзался HttpClient
  // а в SSR httpServer

   this.http = isPlatformServer(this.platformId)
     ? this.httpServer
     : this.httpClient;

И самое главное - нужно добится обновления meta тэгов в SSR режиме!

Кто знает, что я в этой жизни делаю не так? :)
Возможно у кого-то есть примеры?
Заранее, огромное спасибо!
источник

YG

Yurii Gavdan in Angular-universal-ru
@igorfilippov3 Вы у себя делали мета тэги с TransferHttpService и @ngx-meta ?
источник

IF

Igor Filippov in Angular-universal-ru
Yurii Gavdan
@igorfilippov3 Вы у себя делали мета тэги с TransferHttpService и @ngx-meta ?
У нас просто свой хттп сервис. Там TransferState и HttpClient и все
источник

IF

Igor Filippov in Angular-universal-ru
Для метатегов тоже свой сервис
источник

YG

Yurii Gavdan in Angular-universal-ru
А есть хоть какой-то пример, где бы мета теги обновлялись, с динамических http данных?

У меня сейчас, как только добавил TransferHttpService, везде сыпятся ошибки, например вот:
zone.js:199 Uncaught Error: Can't resolve all parameters for ApiService: ([object Object], [object Object], ?, [object Object], [object Object]).
источник

AK

Aram Khachatrian in Angular-universal-ru
можешь скопипастить себе єтот сервис практически 1 в 1 https://github.com/samvloeberghs/kwerri-oss/blob/master/projects/ngx-seo/src/lib/seo-social-share/seo-social-share.service.ts
источник

YG

Yurii Gavdan in Angular-universal-ru
Спасибо!
Сейчас посмотрю как там http запросы обрабатываются.
источник

AK

Aram Khachatrian in Angular-universal-ru
и дальше когда данные приходят

subscribe(resp =>        this.seoSvc.setData({
           title: resp.meta_title,
           keywords: resp.meta_keywords,
           description: resp.meta_description
       })
)
источник

YG

Yurii Gavdan in Angular-universal-ru
Aram Khachatrian
и дальше когда данные приходят

subscribe(resp =>        this.seoSvc.setData({
           title: resp.meta_title,
           keywords: resp.meta_keywords,
           description: resp.meta_description
       })
)
у меня уже вся эта логика написана :) и она даже в dev-tools обновляется, нужно только чтобы это в исходник страницы попадало :)
источник

AK

Aram Khachatrian in Angular-universal-ru
ну и если нужно что бы метатги проставлялись только на сторне сервера, то так

if (isPlatformServer) {
subscribe(resp =>        this.seoSvc.setData({
           title: resp.meta_title,
           keywords: resp.meta_keywords,
           description: resp.meta_description
       })
)
}
источник

AK

Aram Khachatrian in Angular-universal-ru
ну дак попадает
источник

SS

Sergei Sergeevich in Angular-universal-ru
Yurii Gavdan
у меня уже вся эта логика написана :) и она даже в dev-tools обновляется, нужно только чтобы это в исходник страницы попадало :)
Так а почему бы не использовать ngx-meta?
источник

SS

Sergei Sergeevich in Angular-universal-ru
Отлично дружит с ssr
источник

YG

Yurii Gavdan in Angular-universal-ru
Я и использую ngx-meta,
но он обновляет мне все это только в dev-tools в режиме SPA, а когда я делаю сброку SSR - то в исходниках - выводятся только прямо захаркоженные данные для страческих страниц,
а те страницы, которые я получаю по http - не попадают туда.
источник

SS

Sergei Sergeevich in Angular-universal-ru
Yurii Gavdan
Я и использую ngx-meta,
но он обновляет мне все это только в dev-tools в режиме SPA, а когда я делаю сброку SSR - то в исходниках - выводятся только прямо захаркоженные данные для страческих страниц,
а те страницы, которые я получаю по http - не попадают туда.
Странно почему...
источник

SS

Sergei Sergeevich in Angular-universal-ru
Посмотрите как ngx-meta подключается в сборке этого канала
источник

YG

Yurii Gavdan in Angular-universal-ru
Aram Khachatrian
ну и если нужно что бы метатги проставлялись только на сторне сервера, то так

if (isPlatformServer) {
subscribe(resp =>        this.seoSvc.setData({
           title: resp.meta_title,
           keywords: resp.meta_keywords,
           description: resp.meta_description
       })
)
}
сейчас обверну еще в if (isPlatformServer) {
но мне кажется что проблема с http клиентом,
покуда я использую HttpClient - оно наверное работать не будет, а этот TransferHttpService - пока не прикручивается...
источник

YG

Yurii Gavdan in Angular-universal-ru
Sergei Sergeevich
Посмотрите как ngx-meta подключается в сборке этого канала
ok, thanks!
источник