Я хотел бы создать приложение, которое позволит вам щелкнуть по любому сгенерированному элементу и отобразить увеличенную версию. После загрузки, если вы нажмете большую версию на любую другую часть страницы, она должна закрыть.Как динамически создавать/уничтожать модальные на основе div, нажатого (Angular2)
В настоящее время;
Если модальный файл загружен, и вы нажмете его на другой миниатюре, он загрузит еще один модальный поверх предыдущего. Щелчок на пустое пространство ничего не делает.
Что бы я хотел;
Только один Модаль должен быть активным в любое время, если вы нажмете на него на любой другой части страницы, он закроет его.
Вот плунж;
http://plnkr.co/edit/Tt2FD12fGC6gIDfC3cQJ?p=preview
Я новичок в Angular2 (И никогда не использовал ничего ранее сходное с ним), так что я немного потерял и был бы признателен за любую помощь!
Ниже приведены некоторые фрагменты кода;
вид списку компонент (данные нагрузки)
import { Component, OnInit,Output } from "@angular/core";
import { Item } from './item.model';
@Component({
selector: 'my-view-list',
template: `
<div class="container">
<my-item *ngFor="let item of items" [item]="item"></my-item>
</div>
`
})
export class ViewList implements OnInit {
items: Item[] = [
new Item("test1", "http://www.thechromesource.com/wp-content/uploads/2011/07/New-Chrome-Icon-300x300.png"),
new Item("test2", "http://www.pandasecurity.com/mediacenter/src/uploads/2010/03/safari-300x300.jpg"),
new Item("test3", "http://cdn.toptenreviews.com/rev/prod/ce/535-firefox-box.jpg"),
new Item("test4", "http://www.darvu.com/wp-content/uploads/2014/08/IE-300x300.png?f1c57f")
]
}
вид-grid.component (наборы элемент в сетке)
import { Component, Input, Output, EventEmitter} from "@angular/core";
import { Item } from './item.model';
@Component({
selector: 'my-item',
template: `
<div (click)="modalActive()" class="thumbnail">
<img class="thumbImg" [src]="item.image" />
<p> {{ item.name }} </p>
</div>
<modal *ngIf="show" [item]="item"></modal>
`
})
export class ViewGrid {
@Input() item: Item;
public show: boolean = false;
modalActive() {
console.log(this)
this.show = !this.show;
}
}
вид-modal.component (содержит/всплывающее окно модальное)
import { Component, OnInit, Input } from "@angular/core";
import { Item } from './item.model';
@Component({
selector: 'modal',
template: `
<div class="modal">
<img class="modalImg" [src]="item.image" />
</div>
`
})
export class ViewModal {
@Input() item: Item;
}
Могу ли я использовать ngIf в сочетании с ngSwitch? А если использовать полностраничный элемент за модальным, значит ли это, что я должен объединить два компонента, чтобы изменить параметр 'this.show'? – since095
NgIf и NgSwitch могут использоваться вместе. Фоновый элемент необходим, чтобы ваш модальный компонент имел что-то, что вы можете щелкнуть, чтобы вызвать действие (в противном случае вы просто нажимаете основное содержимое). Я бы сохранил компоненты отдельно и посмотрел, позволяют ли директивы ввода и вывода управлять межкомпонентными взаимодействиями таким образом, который удовлетворяет ваши потребности. – gelliott181