в моем приложении Я использую этот library, чтобы пользователь мог выбрать дату.Применить css в компоненте, который использует библиотеку js
Я завернут, что самозагрузки-виджет в компоненте, как это:
@Component({
selector: 'date-picker',
template: '<input type="text" class="form-control" id="{{id}}" />',
styles: [`
.test {
background-color: green;
}
`],
})
export class DatePickerComponent implements OnInit, OnChanges {
public id: string;
@Input() public date: Date;
@Input() public disabled: boolean;
public ngOnInit() {
this.id = 'dp-' + new Date().getTime();
window.setTimeout(() => this.initializeDatePicker());
}
public ngOnChanges(changes: any) {
if (!this.pickerFunctions)
return;
var typedChanges = <DatePickerComponent>changes;
if (typedChanges.disabled)
this.setPickerDisabled(this.disabled);
if (typedChanges.date)
this.setPickerDate(this.date);
}
private initializeDatePicker() {
var element = jQuery('#' + this.id);
(<any>element).datetimepicker();
element.on('dp.change', (e: any) => this.date = e.date.toDate());
this.setPickerDate(this.date);
this.setPickerDisabled(this.disabled);
}
private setPickerDate(date: Date) {
this.pickerFunctions.date(date ? date : null);
}
private setPickerDisabled(disabled: boolean) {
if (disabled)
this.pickerFunctions.disable();
else
this.pickerFunctions.enable();
}
private get pickerFunctions(): any {
var element = jQuery('#' + this.id);
return element.data("DateTimePicker");
}
}
Проблема заключается в том, что стилей: [ «»] из компонента атрибутов не применяются.
Знаете ли вы, почему?
Я попытался импортировать файл css, и таким образом он работает, но я хочу использовать атрибут style, чтобы сделать компонент полностью многоразовым.
Большое спасибо
PS: Странно также, что CSS библиотеки не применяется .. Я импортировать его правильно
<link href="bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css" />
Спасибо, таким образом, он работает! Не могли бы вы лучше объяснить (или добавить ссылку) проблему и что такое «теневой пирсинг»? Еще раз спасибо – user3471528
Угловая добавляет уникальные сгенерированные имена классов в ваши HTML-элементы и переписывает селектор в вашем CSS только для соответствия элементам текущего компонента. Когда вы динамически добавляете HTML, эти классы не добавляются и CSS не соответствует. Комбинатор теневого пирсинга поступает из теневого DOM (был устаревшим, но Angular поддерживает его прямо сейчас). '>>>' просто влияет на то, как CSS-селектора переписываются с помощью Angular. Таким образом, селектора CSS менее избирательны и отбрасываются в дочерние компоненты с другим (или в вашем случае нет) уникальным добавленным классом. –