突然上手Angular

2,955 阅读2分钟

我也不知道怎么就突然开始了一个用Angular的项目, 好的我学!

基础教程

基础的教程是跟着官网走的,把购物车的那个例子走完,就知道基础的东西应该怎么写了,感觉这个例子还是挺充分的,快速上手么得问题。通过购物车的例子自己瞎总结出来的一些知识点:

  • *ngFor
  • *ngIf
  • Interpolation {{ }}
  • Property binding []
  • event binding
  • router
  • Service
    • Import service
    • Inject to constructor
  • form

虽然都很零碎,但是对后面基础概念的理解有很大帮助

上手之后遇到的问题

大概看了一天,然后准备捡卡,到现在做了差不多三张,第一个是拿数据,展示一个复选框,然后提交表单,第二个是把从接口拿回来的数据展示成table,第三个是一个单选输入然后提交表单

  • 第一个的问题不是很大,为什么呢,因为库里面已经有别人写的类似的东西,我抄的嗯哈哈哈哈哈哈

  • 但是第二个的table存在一个问题就是需要合并重复的值,因为从后端拿到的数据是类似这种的:

dataList: any[] = [
   {
    fieldName: "abc",
    descriptions: [
      { name: 'name1',value: 'value1'},
      { name: 'name2',value: 'value2'}
      ]
   },
  {
    fieldName: "def",
    descriptions: [
      {name: 'ppp', value: 'eee'},
      {name: 'pdd', value: 'ggg'},
      {name: 'vvv', value: 'sss'}
    ]
   }
  ];

然后我我们的BA就想一个fieldName占多个description的行数,所以就要rowspan了,但是在rowspan之前,我们需要处理数据,处理成table 的dataSource能用的那种,也就是:

dataList: any[] = [
   {fieldName: "abc",descriptions: { name: 'name1',value: 'value1'}},
   {fieldName: "abc",descriptions: { name: 'name2',value: 'value2'}},
 ];

然后再计算每一个重复的rowspan的值,然后再添加到table的dataSource里面

完整示例: Angular show table with rowspan

  • 第三个问题呢,看着很简单,我已开始想着从Material 拿一个例子,然后加到form里绑定要提交的值就好了,但是我太天真了,Material里面的radio竟然是inline显示的,但是我不想写css, 所以就给外面包了一层list,然后再把每一个选项都包一层list-item,就好了哈哈哈哈哈哈,不写css使人开心。 🌰
<mat-list role="list" cols="4" rowHeight="100px" class="radio-list">
    <mat-radio-group formControlName="considerHoliday">
      <mat-list-item role="listitem" *ngFor="let item of radios">
        <mat-radio-button [value]="item.value" color="primary">
          {{ item.description }}
        </mat-radio-button>
      </mat-list-item>
    </mat-radio-group>
  </mat-list>

随便写点啥

我必须要夸Angular的文档,很清晰,很多小的Tips体验感超级棒,太适合我这种新手上手实践了,而且那个购物车的demo就很优秀啊,大部分高频率要用的东西都有实践,并且一把手教你。

而且感觉Angular本身,分离了html,css,js,层次就很清晰,写代码的思路也不会混乱,表示夸奖!