Angular开发技巧

简介: Angular开发技巧

避免生成css



ng g c xxx --style=none


数据结构渲染Form表单



import {Validators} from "@angular/forms";
const dateForm = {
  sex: {value: null, required: true, maxLength: 10},
  gender: {value: 20, required: true,},
}
interface formObj {
  value: null | string | number,
  required: boolean,
  maxLength?: number
}
interface dateType {
  [propName: string]: formObj
}
const hasArr = (dataForm: dateType) => {
  const obj = Object.create(null);
  for (const item in dataForm) {
    const keyArr: any = [dataForm[item].value, []];
    if (dataForm[item].required) {
      keyArr[1].push = Validators.required
    }
    if (dataForm[item].maxLength) {
      keyArr[1].push = Validators.maxLength(dataForm[item].maxLength as number)
    }
    obj[item] = keyArr
  }
  return obj
}
this.fb.group(hasArr(dataForm))


行内样式

<nz-date-picker
    #endDatePicker
    [nzDisabledDate]="getDisabledEndDate"
    [nzDisabledTime]="getDisabledEndTime"
    [nzShowTime]="{
      nzFormat: 'HH:mm',
      nzHideDisabledOptions: true
    }"
    nzFormat="yyyy-MM-dd HH:mm"
    [(ngModel)]="selectedEndDate"
    nzPlaceHolder="结束时间"
    (nzOnOpenChange)="handleEndOpenChange($event)"
  ></nz-date-picker>


时间选择器



 <nz-date-picker
    #endDatePicker
    [nzDisabledDate]="getDisabledEndDate"
    [nzDisabledTime]="getDisabledEndTime"
    [nzShowTime]="{
      nzFormat: 'HH:mm',
      nzHideDisabledOptions: true
    }"
    nzFormat="yyyy-MM-dd HH:mm"
    [(ngModel)]="selectedEndDate"
    nzPlaceHolder="结束时间"
    (nzOnOpenChange)="handleEndOpenChange($event)"
  ></nz-date-picker>


// 禁用的时分秒
getDisabledEndDate = () => (d: Date) => {
    const bt = moment(this.selectedBeginDate).startOf('day').valueOf();
    const et = moment(this.endTime).endOf('day').valueOf();
    return d.getTime() < bt || d.getTime() > et;
  };
  getDisabledEndTime = () => (currentDate: Date) => {
    const isSameDateWithEndDate = moment(currentDate).isSame(moment(this.endTime), 'date');
    const isSameHourWithEndHour = moment(currentDate).isSame(moment(this.endTime), 'hour');
    const isSameDateWithSelectedBeginDate = moment(currentDate).isSame(moment(this.selectedBeginDate), 'date');
    const isSameHourWithSelectedBeginHour = moment(currentDate).isSame(moment(this.selectedBeginDate), 'hour');
    this.disabledEndTime = this.getDisabledEndTime();
    const disabledHours = [];
    const disabledMinutes = [];
    if (isSameDateWithEndDate) {
      for (let i = moment(this.endTime).hour() + 1; i < 24; i++) {
        disabledHours.push(i);
      }
      if (isSameHourWithEndHour) {
        for (let i = moment(this.endTime).minute() + 1; i < 60; i++) {
          disabledMinutes.push(i);
        }
      }
    }
    if (isSameDateWithSelectedBeginDate) {
      for (let i = 0; i < moment(this.selectedBeginDate).hour() + (moment(this.selectedBeginDate).minute() === 59 ? 1 : 0); i++) {
        disabledHours.push(i);
      }
      if (isSameHourWithSelectedBeginHour) {
        for (let i = 0; i <= moment(this.selectedBeginDate).minute(); i++) {
          disabledMinutes.push(i);
        }
      }
    }
    return {
      nzDisabledHours: () => {
        return disabledHours;
      },
      nzDisabledMinutes: (hour) => {
        return disabledMinutes;
      },
    };
  };


scrollIntoView



方法会滚动元素的父容器,使被调用scrollIntoView()的元素对用户可见


scrollIntoView({ behavior: 'smooth', block: 'center' });


jq使用



npm install jquery -S

npm install @types/jquery -D


angular.json


 "scripts": [
           +   "node_modules/jquery/dist/jquery.min.js"
            ]


使用


import * as $ from 'jquery';
或者
declare var $:any;
$('p')



相关文章
|
24天前
|
前端开发 JavaScript Java
如何使用 Spring Boot 和 Angular 开发全栈应用程序:全面指南
如何使用 Spring Boot 和 Angular 开发全栈应用程序:全面指南
34 1
|
4月前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
53 0
|
4月前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
76 0
|
4月前
|
前端开发 安全 开发者
JSF文件上传,让Web应用如虎添翼!一招实现文件上传,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,文件上传是重要功能之一。JSF(JavaServer Faces)框架提供了强大的文件上传支持,简化了开发流程。本文将介绍JSF文件上传的基本步骤:创建前端表单、处理上传文件的后端Action类、将文件保存到服务器指定目录以及返回结果页面。通过示例代码,我们将展示如何利用JSF实现文件上传功能,包括使用`h:inputFile`控件和`ManagedBean`处理上传逻辑。此外,JSF文件上传还具备类型安全、解耦合和灵活性等优点,有助于提升程序的健壮性和可维护性。
45 0
|
4月前
|
开发者 Java 存储
JSF 与 CDI 携手共进,紧跟技术热点,激发开发者情感共鸣,开启高效开发新征程
【8月更文挑战第31天】JavaServer Faces (JSF) 与 Contexts and Dependency Injection (CDI) 在 Java EE 领域中紧密协作,助力开发者高效构建现代 Web 应用。JSF 凭借其丰富的组件库和页面导航功能受到青睐,而 CDI 则优雅地管理对象生命周期并实现依赖注入。两者结合,不仅简化了复杂企业应用的开发,还实现了松耦合架构,增强了代码的灵活性、可维护性和可扩展性。通过示例展示了如何利用 CDI 将业务服务对象注入 JSF Managed Bean,以及如何在不同页面间共享数据,突显了这一组合的强大功能。
43 0
|
4月前
|
前端开发 API 开发者
JSF与RESTful服务的完美邂逅:如何打造符合现代Web潮流的数据交互新体验
【8月更文挑战第31天】随着互联网技术的发展,RESTful架构风格因其实现简便与无状态特性而在Web服务构建中日益流行。本文探讨如何结合JavaServer Faces (JSF) 和 JAX-RS 构建RESTful API,展示从前端到后端分离的完整解决方案。通过定义资源类、配置 `web.xml` 文件以及使用依赖注入等步骤,演示了在JSF项目中实现RESTful服务的具体过程,为Java开发者提供了实用指南。
43 0
|
4月前
|
前端开发 开发者 安全
JSF支付功能大揭秘:探索如何在Java世界中实现安全无缝的在线支付体验
【8月更文挑战第31天】在电子商务和在线交易日益普及的今天,实现在线支付功能已成为许多Web应用的必备需求。JavaServer Faces (JSF) 作为一种流行的Java Web框架,提供了丰富的组件和工具来构建用户界面,包括与支付网关集成以实现在线支付。支付网关是处理信用卡和借记卡支付的系统,在商家和银行之间起到桥梁作用。本文将探讨如何使用JSF与支付网关集成,以及实现在线支付功能时需要考虑的关键点
53 0
|
4月前
|
前端开发 JavaScript 测试技术
Angular CLI 快速入门超棒!这个提高开发效率的必备工具,带你轻松开启 Angular 项目之旅!
【8月更文挑战第31天】作为一名前端开发者,我发现Angular CLI是提升Angular项目开发效率的强大工具。它是Angular团队提供的命令行工具,能快捷创建、开发及维护项目。通过简单命令即可创建项目、生成组件、服务、模块等,并支持构建、测试与部署,大幅简化开发流程,使开发者更专注业务逻辑。项目结构清晰,便于理解和维护,极大地提高了开发效率。如果你还未尝试Angular CLI,强烈推荐一试,其便捷性定会让你爱不释手。
46 0
|
4月前
|
缓存 前端开发 安全
Angular 与 GraphQL 强势联合超厉害!现代前端数据获取新范式,开启高效开发新旅程!
【8月更文挑战第31天】在前端开发领域,Angular 与 GraphQL 的结合为数据获取带来了革命性的变化。Angular 凭借其强大的组件化开发模式和依赖注入特性,成为构建大型应用的理想选择。然而,在数据获取上,传统 RESTful API 显得力不从心。这时,GraphQL 出现了,它允许前端精确获取所需数据,避免了数据过度获取或不足的问题。通过一个简单的查询语句,即可一次性获取所需数据,极大地提升了效率。虽然在实际应用中仍需解决缓存和错误处理等问题,但这种结合无疑为现代前端数据获取开辟了新道路,推动技术不断进步。
52 0
|
4月前
|
JavaScript 前端开发 测试技术
Angular 与 Node.js 无缝对接简直太牛啦!前后端分离最佳实践,开启高效开发新时代!
【8月更文挑战第31天】随着互联网技术的发展,前后端分离模式日益受到开发者青睐。本文综述了 Angular 与 Node.js 的优势及无缝对接技术,探讨了前后端分离的最佳实践。Angular 以其组件化开发、双向数据绑定等特性成为优秀的前端框架;Node.js 则依靠高并发处理能力和全栈 JavaScript 开发的优势在后端大放异彩。两者结合通过 HTTP 请求实现高效通信,并可通过数据库实现数据共享。此外,文章还强调了接口设计、代码分离、测试及部署等方面的最佳实践,为开发者提供了全面的指导。
125 0