【问题标题】:Angular 7 equivalent to angularJS code for element cloning [closed]Angular 7相当于用于元素克隆的angularJS代码[关闭]
【发布时间】:2019-03-21 01:48:07
【问题描述】:

我正在学习 Angular。我有一个用于学习目的的项目。我在我想添加无穷无尽的项目类型的部分,就像它在this example 中所做的那样。

;(function () {
   'use strict';

   var DemoController = function($scope){
      $scope.selectData = [
         {
            'name':'Rasmus Lerdorf',
            'lang':'PHP'
         },
         {
            'name':'James Gosling & Patrick Naughton',
            'lang':'Java'
         }
      ];
      $scope.informations = [
         {
           'inputName' : '',
           'inputSelect' : '',
            'inputCheckbox' :'',
            'optionsRadios' : ''
         }
      ];

      $scope.cloneItem = function () {
         var itemToClone = { 
            'inputName': '', 
            'inputSelect': '',
            'inputCheckbox':'',
            'optionsRadios': ''
         };
         $scope.informations.push(itemToClone);
      }

      $scope.removeItem = function (itemIndex) {
         $scope.informations.splice(itemIndex, 1);
      }

      $scope.submitForm = function() {

      }
   }
   angular
      .module('app', [])
      .controller('DemoController' , DemoController);
      DemoController.$inject = ['$scope'];
})();

我知道这个例子很老了。可能来自 Angular 1。我在任何地方都找不到元素克隆的示例。

如果您能帮助我了解克隆元素在 Angular7 中的工作原理,我将不胜感激。

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 正如我所提到的,我是 Angular 的新手。不知道如何克隆。我可以使用 jQuery 进行克隆,但不能使用 Angular。我正在尝试理解@Adrian Brand 发布的代码。
  • @Zze 请在下面查看我关于 Angular 元素克隆 Google 搜索的评论。如果新程序员找不到有用的资源,他们应该如何学习 Angular。到目前为止angular.iostackblitz.com 中的示例很有帮助。对于学习 Angular 的任何建议,我将不胜感激。

标签: angularjs angular angular7 clone


【解决方案1】:

你的代码是 AngularJS,而不是 Angular。

你的模型有一个数据结构。

export interface Developer {
  name: string;
  language: string;
  selected: boolean;
}

然后你用它们的数组制作一个组件

  developers: Developer[] = [{ name:'', language: '', selected: false }];

  add() {
    this.developers.push({ name:'', language: '', selected: false });
  }

在视图中你 ngFor 遍历数组。

<ng-container *ngFor="let developer of developers;let i = index">
  <input [name]="'name_' + i" [(ngModel)]="developer.name" type="text">
  <select [name]="'language_' + i" [(ngModel)]="developer.language">
    <option>PHP</option>
    <option>Java</option>
    <option>Angular</option>
    <option>TypeScript</option>
  </select>
  <input [name]="'selected_' + i" [(ngModel)]="developer.selected" type="checkbox">
  <br>
</ng-container>

<button (click)="add()">Add</button>

学习 Angular 的最佳方式是在 StackBlitz https://stackblitz.com/edit/angular-ksgsnm?file=src/app/app.component.html

【讨论】:

  • 哇哇!那个网站真棒。感谢那。它类似于 Angular 的 jsFiddle,但更先进。显然它是 Visual Studio Code 的在线版本。我正在研究您提供的示例代码。如果我有任何问题,我会问你。顺便说一句,我指出我提供的代码是 Angular v1。 AngularJS 是 Angular v1?我错了吗?再次感谢您所做的一切。
  • 我查看了代码。一切都是那么清晰和简单。当我搜索“角度克隆元素推送”时,所有结果都与 AngularJS 相关,看看这里google.com/… 太奇怪了。即使我过滤并仅显示上个月的结果,也只会找到与搜索相关的这个 stackoverflow 主题。其余的主题只是不相关。不知道如何克隆元素。
  • 你真的让我很开心。再次感谢你。我非常感谢你。
  • 我尝试投票,但收到此警告“感谢您的反馈!声望低于 15 人的投票将被记录,但不要更改公开显示的帖子得分...我正在尝试重命名表单输入名称。每次克隆语言-2、语言-3、语言-4等时,它们应该是这样的。我试过这样的东西“formControlName={{language+ i}}但不能增加数字.您能否告诉我如何通过更新 stackblitz 来更改克隆输入的名称。不用着急。只要你有空闲时间。
  • 看看上面的代码,你将ngFor的索引绑定到一个视图变量i,然后将名称从属性绑定更改为属性绑定,并用i计算一个字符串
猜你喜欢
  • 2016-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多