#angular
Вопрос:
Когда пользователь нажимает кнопку «Добавить» под фотографией, эта конкретная фотография должна быть добавлена в таблицу рядом со списком, а кнопка «Добавить» должна превратиться в кнопку «УДАЛИТЬ».
напр..
Текущее состояние:
Ожидаемые результаты:
Шаблон:
lt;div class="row"gt; lt;div class="container col-6"gt; lt;h1gt;Listlt;/h1gt; lt;div class="row"gt; lt;div class="col-3" *ngFor="let a of data"gt; lt;div class="row"gt;lt;img src="{{a.url}}" style="height: 100px; padding: 10px;"gt; lt;/divgt; lt;div class="row" style=" padding: 10px;"gt;lt;button class="btn btn-primary" (click)="onclick(a)"gt;Addlt;/buttongt;lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt; lt;div class="container col-6"gt; lt;h1gt;Tablelt;/h1gt; lt;table class="table"gt; lt;theadgt; lt;trgt; lt;th scope="col"gt;Photolt;/thgt; lt;th scope="col"gt;Idlt;/thgt; lt;th scope="col"gt;URLlt;/thgt; lt;th scope="col"gt;Titlelt;/thgt; lt;/trgt; lt;/theadgt; lt;tbody *ngFor="let s of array"gt; lt;tr (click)="DeleteItem(s.id)"gt; lt;th scope="col"gt;lt;img src="{{s.url}}" style="height: 30px; padding: 10px;"gt;lt;/thgt; lt;th scope="col"gt;{{s.id}}lt;/thgt; lt;th scope="col"gt;{{s.url}}lt;/thgt; lt;th scope="col"gt;{{s.title}}lt;/thgt; lt;/trgt; lt;/tbodygt; lt;/tablegt; lt;/divgt; lt;/divgt;
Компонентная логика:
data: any = [{ "albumId": 1, "id": 1, "title": "accusamus beatae ad facilis cum similique qui sunt", "url": "https://via.placeholder.com/600/92c952", "thumbnailUrl": "https://via.placeholder.com/150/92c952" }, { "albumId": 1, "id": 2, "title": "reprehenderit est deserunt velit ipsam", "url": "https://via.placeholder.com/600/771796", "thumbnailUrl": "https://via.placeholder.com/150/771796" }, { "albumId": 1, "id": 3, "title": "officia porro iure quia iusto qui ipsa ut modi", "url": "https://via.placeholder.com/600/24f355", "thumbnailUrl": "https://via.placeholder.com/150/24f355" }, { "albumId": 1, "id": 4, "title": "culpa odio esse rerum omnis laboriosam voluptate repudiandae", "url": "https://via.placeholder.com/600/d32776", "thumbnailUrl": "https://via.placeholder.com/150/d32776" }, { "albumId": 1, "id": 5, "title": "natus nisi omnis corporis facere molestiae rerum in", "url": "https://via.placeholder.com/600/f66b97", "thumbnailUrl": "https://via.placeholder.com/150/f66b97" }, { "albumId": 1, "id": 6, "title": "accusamus ea aliquid et amet sequi nemo", "url": "https://via.placeholder.com/600/56a8c2", "thumbnailUrl": "https://via.placeholder.com/150/56a8c2" }, { "albumId": 1, "id": 7, "title": "officia delectus consequatur vero aut veniam explicabo molestias", "url": "https://via.placeholder.com/600/b0f7cc", "thumbnailUrl": "https://via.placeholder.com/150/b0f7cc" }, { "albumId": 1, "id": 8, "title": "aut porro officiis laborum odit ea laudantium corporis", "url": "https://via.placeholder.com/600/54176f", "thumbnailUrl": "https://via.placeholder.com/150/54176f" }, { "albumId": 1, "id": 9, "title": "qui eius qui autem sed", "url": "https://via.placeholder.com/600/51aa97", "thumbnailUrl": "https://via.placeholder.com/150/51aa97" }, { "albumId": 1, "id": 10, "title": "beatae et provident et ut vel", "url": "https://via.placeholder.com/600/810b14", "thumbnailUrl": "https://via.placeholder.com/150/810b14" }, { "albumId": 1, "id": 11, "title": "nihil at amet non hic quia qui", "url": "https://via.placeholder.com/600/1ee8a4", "thumbnailUrl": "https://via.placeholder.com/150/1ee8a4" }, { "albumId": 1, "id": 12, "title": "mollitia soluta ut rerum eos aliquam consequatur perspiciatis maiores", "url": "https://via.placeholder.com/600/66b7d2", "thumbnailUrl": "https://via.placeholder.com/150/66b7d2" }, { "albumId": 1, "id": 13, "title": "repudiandae iusto deleniti rerum", "url": "https://via.placeholder.com/600/197d29", "thumbnailUrl": "https://via.placeholder.com/150/197d29" }, { "albumId": 1, "id": 14, "title": "est necessitatibus architecto ut laborum", "url": "https://via.placeholder.com/600/61a65", "thumbnailUrl": "https://via.placeholder.com/150/61a65" }, { "albumId": 1, "id": 15, "title": "harum dicta similique quis dolore earum ex qui", "url": "https://via.placeholder.com/600/f9cee5", "thumbnailUrl": "https://via.placeholder.com/150/f9cee5" }, ]; array: any = [] comaprebnt: boolean = false; removebnt: boolean = true constructor() {} ngOnInit() { } onclick(a) { console.log(a) this.array.push(a) }
Когда пользователь нажимает кнопку УДАЛИТЬ над фотографией на странице списка фотографий, эта фотография должна быть удалена из таблицы.
Комментарии:
1. Можете ли вы показать нам любой машинописный текст, который вы написали до сих пор?
2. Вы можете легко изменить цвет с помощью класса (
ngClass
). Чтобы добавить элемент в таблицу, просто вставьте элемент в массив.
Ответ №1:
public objArray = [ { value:"item1", isAdded: false }, { value:"item2", isAdded: false } ] public addRemoveElement(index: number){ objArray.forEach(elem:any, ind:number)=gt;{ if(ind === index) elem.isAdded = !elem.isAdded; }) } ----------------------------------------- .redbg{ background: red; } lt;div *ngFor="let obj in objArray; let ind=index"gt; lt;div [class.redbg]="obj.isAdded" (click)="addRemoveElemen(ind)"gt;{{ item.isAdded ? 'Remove' : 'Add' }}lt;/divgt; lt;/divgt;
Ответ №2:
Вы должны установить массив, подобный этому, я добавил один тип ключа, какой бы тип вы ни выбрали, и установил любое значение ключа, как я установил
data: any = [{ "albumId": 1, "id": 1, "title": "accusamus beatae ad facilis cum similique qui sunt", "url": "https://via.placeholder.com/600/92c952", "thumbnailUrl": "https://via.placeholder.com/150/92c952", "type": "add" }, { "albumId": 1, "id": 2, "title": "reprehenderit est deserunt velit ipsam", "url": "https://via.placeholder.com/600/771796", "thumbnailUrl": "https://via.placeholder.com/150/771796", "type": "delete" }, { "albumId": 1, "id": 3, "title": "officia porro iure quia iusto qui ipsa ut modi", "url": "https://via.placeholder.com/600/24f355", "thumbnailUrl": "https://via.placeholder.com/150/24f355", "type": "add" }, { "albumId": 1, "id": 4, "title": "culpa odio esse rerum omnis laboriosam voluptate repudiandae", "url": "https://via.placeholder.com/600/d32776", "thumbnailUrl": "https://via.placeholder.com/150/d32776", "type": "delete" }, { "albumId": 1, "id": 5, "title": "natus nisi omnis corporis facere molestiae rerum in", "url": "https://via.placeholder.com/600/f66b97", "thumbnailUrl": "https://via.placeholder.com/150/f66b97", "type": "add" }, { "albumId": 1, "id": 6, "title": "accusamus ea aliquid et amet sequi nemo", "url": "https://via.placeholder.com/600/56a8c2", "thumbnailUrl": "https://via.placeholder.com/150/56a8c2", "type": "add" }, { "albumId": 1, "id": 7, "title": "officia delectus consequatur vero aut veniam explicabo molestias", "url": "https://via.placeholder.com/600/b0f7cc", "thumbnailUrl": "https://via.placeholder.com/150/b0f7cc", "type": "add" }, { "albumId": 1, "id": 8, "title": "aut porro officiis laborum odit ea laudantium corporis", "url": "https://via.placeholder.com/600/54176f", "thumbnailUrl": "https://via.placeholder.com/150/54176f", "type": "add" }, { "albumId": 1, "id": 9, "title": "qui eius qui autem sed", "url": "https://via.placeholder.com/600/51aa97", "thumbnailUrl": "https://via.placeholder.com/150/51aa97", "type": "add" }, { "albumId": 1, "id": 10, "title": "beatae et provident et ut vel", "url": "https://via.placeholder.com/600/810b14", "thumbnailUrl": "https://via.placeholder.com/150/810b14", "type": "add" }, { "albumId": 1, "id": 11, "title": "nihil at amet non hic quia qui", "url": "https://via.placeholder.com/600/1ee8a4", "thumbnailUrl": "https://via.placeholder.com/150/1ee8a4", "type": "add" }, { "albumId": 1, "id": 12, "title": "mollitia soluta ut rerum eos aliquam consequatur perspiciatis maiores", "url": "https://via.placeholder.com/600/66b7d2", "thumbnailUrl": "https://via.placeholder.com/150/66b7d2", "type": "add" }, { "albumId": 1, "id": 13, "title": "repudiandae iusto deleniti rerum", "url": "https://via.placeholder.com/600/197d29", "thumbnailUrl": "https://via.placeholder.com/150/197d29", "type": "add" }, { "albumId": 1, "id": 14, "title": "est necessitatibus architecto ut laborum", "url": "https://via.placeholder.com/600/61a65", "thumbnailUrl": "https://via.placeholder.com/150/61a65", "type": "add" }, { "albumId": 1, "id": 15, "title": "harum dicta similique quis dolore earum ex qui", "url": "https://via.placeholder.com/600/f9cee5", "thumbnailUrl": "https://via.placeholder.com/150/f9cee5", "type": "add" }, ];
затем на стороне HTML установите условие и добавьте одну строку для кнопки удалить
lt;div class="row" style=" padding: 10px;"gt;lt;button class="btn btn-primary" *ngIf="a.type == 'add'" (click)="onclick(a)"gt;Addlt;/buttongt;lt;/divgt; lt;div class="row" style=" padding: 10px;"gt;lt;button class="btn btn-primary" *ngIf="a.type == 'delete'" (click)="onclick(a)"gt;Removelt;/buttongt;lt;/divgt;
Комментарии:
1. На самом деле этот JSON поступает из API, когда я нажимаю на определенную кнопку добавления, которую нужно изменить в кнопке удаления.
2. когда у вас есть ответ API, затем сопоставьте этот массив и добавьте один ключ, как я сделал, тогда все работает нормально, если это не сработает, дайте мне знать, и как выглядит ваш ответ API