#angular
#angular
Вопрос:
В приложении angular я выполняю вызовы API с использованием http-службы с перехватчиком, которые добавляют заголовки к запросу. Я ищу способ передать имя вызывающего компонента в качестве заголовка http, без необходимости добавлять его в качестве параметра при каждом вызове службы http. Например, из MyComponent:
this.HttpService.GetSomethingName("MyComponent",SomethingID); // annoying
это было бы очень раздражающе
, поэтому, если бы я мог вызвать службу, например :
this.HttpService.GetSomethingName(SomethingID); // simple
а затем в сервисе каким-то образом получить имя компонента было бы чище и проще
есть идеи?
Комментарии:
1. Этого трудно добиться, хотя, если вы можете извлечь имя компонента с помощью
this.contstructor.name
(компонента), при минимизации кода имя класса может изменить формуAppComponent
наA
. Также вы не можете напрямую передавать имя компонента внутриservice
2. Я могу использовать свойство для хранения имени компонента или присвоить ему уникальный ключ для решения проблемы минимизации. Но все же я должен передавать этот ключ при каждом вызове службы. Этот ключ не имеет ничего общего с логикой службы, но я должен передать его на сервер для ведения журнала и проблем безопасности.
3. Я пытался решить проблему, но вы не можете действительно прочитать параметр, но, конечно, вы можете сделать что-то вроде этого stackblitz.com/edit/angular-fj2knm не могли бы вы, пожалуйста, попробовать это и дать мне знать, если это сработает?
Ответ №1:
Если ваша проблема в том, что вы вызываете GetSometingName()
много раз MyComponent
, то почему бы просто не создать метод, MyComponent
который делает это:
private GetSomethingName(id: SomeIdType): void {
this.HttpService.GetSomethingName("MyComponent", SomethingID);
}
Но если вы хотите вызывать различные методы и добавлять аргументы для каждого из них, то я ничего не могу придумать.