Подтвердить что ты не робот

Можно ли использовать компонент angular 2 с селектором атрибутов?

В настоящее время мы имеем существующий небольшой проект Angular 1, который используется в среде Sharepoint 2013. Для большей части нашего контента мы используем публикации в среде Sharepoint.

С Angular 1 мы можем определить директивы, которые должны быть ограничены: сопоставление имени атрибута, имени тега, комментариев или имени класса. Большинство директив, которые мы создали, были атрибутом или именем тега. Предпочтение было бы именем тега, но платформа публикации в Sharepoint выделяет элементы неизвестные. Это означает, что нам осталось использовать атрибуты, чтобы привести наши директивы на страницы публикации. При использовании Angular 2, я видел только компоненты, реализованные по имени тега.

Можно ли использовать Angular 2 для использования имен атрибутов для использования наших компонентов? Это требование для нас из-за ограничений в платформе публикации Sharepoint.

Спасибо.

4b9b3361

Ответ 1

Да, свойство selector декоратора @Component - селектор CSS (или подмножество из):

selector: '.cool-button:not(a)'

Определяет селектор CSS, который идентифицирует эту директиву в шаблоне. Поддерживаемые селектора включают element, [attribute], .class и :not().
Не поддерживает селектор отношений родитель-потомок.

Источник: Angular Конфигурация чит-листа/директивы, которую @Component наследует.суб >

Таким образом вы можете использовать [name-of-the-attribute] (а именно, селектор атрибутов CSS), например:

@Component({
    selector: "[other-attr]",
    ...
})
export class OtherAttrComponent {

Se демонстрационный плункер здесь.

Обычным способом является селектор типа CSS (AKA или тег):

@Component({
    selector: "some-tag",
    ...
})

И он соответствует тегу с именем some-tag.

У вас может даже быть компонент, который соответствует как тег, так и атрибут:

@Component({
    selector: "other-both,[other-both]",
    template: `this is other-both ({{ value }})`
})
export class OtherBothComponent {

Demo plunker содержит примеры всех трех.

Поддерживается ли [attributeName="attributeValue"]?

Да. Но помните кавычки. В текущей реализации селектор [attributeName="attributeValue"] действительно соответствует <sometag attributeName='"attributeValue"'>, поэтому перед тем, как совершить этот подход, проверьте тест.

Ответ 2

Да, в соответствии с этим https://angular.io/docs/ts/latest/guide/cheatsheet.html (компоненты и директивы очень похожи в целом). Вместо использования селектора элементов:

selector: 'custom-element-name'

Использование:

selector: '[custom-attribute-name]'

И в шаблоне родительского компонента:

<div custom-attribute-name></div>

Ответ 3

Свойство селектора поддержки @Component декоратор, селектор элемента, селектор атрибута и селектор класса:

1. Элемент селектора:

@Component({
 selector: 'app-servers'
})

Использование: <app-servers></app-servers>

2. Селектор атрибутов:

@Component({
 selector: '[app-servers]'
})

Использование: <div app-servers></div>

3. Селектор класса:

@Component({
 selector: '.app-servers'
})

Использование: <div class="app-servers"></div>

Примечание. Angular 2 не поддерживает псевдо-селекторы id и

Ответ 4

Совершенно верно. По сути, это просто селектор CSS, поэтому, если вам нужно использовать атрибут, вы просто делаете это:

@Component({
    selector: "my-tag[with-my-attribute]"
})