#angular #angular-cli
#angular #angular-cli
Вопрос:
Как я могу получить мета-значение из заголовка HTML в Angular2?
Например, у меня есть HMTL моего проекта, и я хотел бы получить мета-имя «userId».
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>SampleProject</title>
<base href="/">
<meta name="userId" value="12345">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root>Loading...</app-root>
</body>
</html>
Ответ №1:
document.querySelector('meta["userId"]').getAttribute('value')
В Angular2 для этого нет специальной поддержки.
Если вы пытаетесь избежать прямого доступа к DOM, вы можете прочитать это перед запуском Angular2 и передать его Angular с помощью DI.
var userId = document.querySelector('meta["userId"]').getAttribute('value');
// @Injectable(), @Component(), or @Directive()
class ServiceOrComponent {
constructor(@Inject('userId') private userId:string) {}
}
@NgModule({
providers: [{provide: 'userId', useValue: userId]}
....
})
export class AppModule()
Вместо 'userId'
строки вы также можете использовать OpaqueToken
Комментарии:
1. Спасибо @GunterZochbauer .
document.querySelector...
Должно бытьdocument.querySelector('meta[name="userId"]').getAttribute('value')
. Я проверюOpaqueToken
2. AFAIK внутренние кавычки не нужны, если в них нет пробелов, а значение не начинается с числа (возможно, и с других символов). В любом случае спасибо за отзыв. Я обновил ответ.