angular延时函数和数据加载完才显示主要的页面、上传文件到后端、富文本框编辑框(ckeditor)

  • 延时函数
setTimeout(()=>{
  console.log("延时打印")
},10000);  // 延时10秒打印

//简单等数据加载完才显示主要的页面
1、先下载ngx-loading模块
npm install --save ngx-loading
2、在app.module.ts中引入NgxLoadingModule模块
import {NgxLoadingModule} from 'ngx-loading';
imports: [
    BrowserModule,
    AppRoutingModule,
    NgxLoadingModule.forRoot({
      fullScreenBackdrop:true,  //全屏
      backdropBorderRadius:'3px' // 框的弧度
    }),
  ],
3、在component.ts中添加isload属性
 isload=false;
  ngOnInit() {
    let that = this;
    that.isload = true;
    // 延时函数
    setTimeout(()=>{
      console.log("延时打印")
      that.isload = false
    },5000);
  }
// 先渲染页面,后再反应typescript
4、html文中
<div style="background-color: red;width: 400px;height: 500px;">
    大帅锅,啊哈哈哈哈
</div>
<ngx-loading [show]="isload"></ngx-loading>
  • 上传文件到后端
前端
1、html部分
<input multiple type="file" accept="{{acceptType}}" name="uploadfile" (change)="UploadAndViewImg($event)">
2、component.ts部分
acceptType = "image/jp2,image/jpe,image/jpeg,image/jpg,image/png,image/svf,image/tif,image/tiff,image/dwg,image/dxf,image/gif";
  url = "http://localhost:8080/upload"
  constructor(
    private http:HttpClient
  ) { }

  ngOnInit() {
  }

  UploadAndViewImg(event){
    console.log("event.target.files=",event.target.files);
    if(!event.target.files||event.target.files.length==0){
      console.log("上传文件失败");
      return;
    }
    let that = this;
    let fileCount = event.target.files.length
    let s = 1024*50;
    console.log("fileCount=",JSON.stringify(fileCount))
    for(var i=0;i<fileCount;i++){
      let size = event.target.files[i].size/1024; //计算多少KB
      console.log("size =",size);
      that.uploadFile(event.target.files[i])
    }
  }
  // 上传文件
  uploadFile(file:File){
    console.log(file)
    const formData = new FormData();
    formData.append('file',file,file.name);  //这边可以使得传输的内容是数组形式
    console.log("uploadFile =",JSON.stringify(formData))  //JSON.stringify返字符串
    this.http.post(this.url,formData).subscribe((response:any)=>{
      console.log(response) // 默认接收json对象
    })
  }
3、go后端接收
package main

import(
    "log"
    "os"
    "io/ioutil"
    "encoding/json"
    "net/http"
)

func upload(w http.ResponseWriter,r *http.Request){
    r.ParseForm()
    if r.Method != "POST"{
        log.Println("接受的请求不是POST请求")
        return
    }
    w.Header().Set("Access-Control-Allow-Origin","*") //允许访问所有的域
    w.Header().Set("Access-Control-Allow-Headers","Content-Type")
    w.Header().Set("content-type","application/json")
    file,_,err := r.FormFile("file")
    if err!=nil{
        log.Println("获取表单值错误:",err)
        return
    }
    f,err:=os.OpenFile("test.jpg",os.O_CREATE|os.O_APPEND,0777)
    if err!=nil{
        log.Println("打开文件失败",err)
        return
    }
    defer f.Close()
    body,err := ioutil.ReadAll(file)
    if err!=nil{
        log.Println("转化为[]byte失败",err)
        return
    }
    f.Write(body)
    data := make(map[string]string)
    data["str"]="data"
    jStr,_:=json.Marshal(data)
    w.Write(jStr)
    return
}

func main(){
    log.Println("接收文件")
    http.HandleFunc("/upload",upload)
    http.ListenAndServe(":8080",nil)
}
  • 富文本框编辑框(ckeditor)
1、下载富文本编辑框
npm install --save @ckeditor/ckeditor5-angular
npm install @ckeditor/ckeditor5-build-classic
2、在app.module.ts中添加
import {CKEditorModule} from '@ckeditor/ckeditor5-angular'
imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule,
    CKEditorModule,
    NgxLoadingModule.forRoot({
      fullScreenBackdrop:true,  //全屏
      backdropBorderRadius:'3px'
    }),
  ],
3、在component.ts文件中
import * as ClassicEditor from '@ckeditor/ckeditor5-build-classic';
public Editor = ClassicEditor;(不在constructor实例化)
4、在html中写入
<ckeditor [editor]="Editor" data="Hello world"></ckeditor>
5、汉化,鼠标悬浮显示中文
component.ts文件
import '@ckeditor/ckeditor5-build-classic/build/translations/zh-cn.js'; // 汉化
// 配置语言
  public config = {
    language:'zh-cn'
  };
html文件
<ckeditor [editor]="Editor" [config]="config" data="Hello world"></ckeditor>
6、获取ckeditor内容
component.ts
// 获取ckeditor中的内容
article = {content:''};
getData(){
   console.log(this.article.content)
}
html代码
<ckeditor [editor]="Editor" [config]="config" [(ngModel)]="article.content" data="Hello world"></ckeditor>
<button (click)="getData()">获取富文本框内容</button>

原文地址:https://www.cnblogs.com/MyUniverse/p/11832470.html

时间: 2024-08-07 10:47:24

angular延时函数和数据加载完才显示主要的页面、上传文件到后端、富文本框编辑框(ckeditor)的相关文章

ionic上拉加载更多当数据加载完没有下一页的时候我们需要显示一下&quot;没有更多了&quot;的友好提示

ionic上拉加载更多当数据加载完没有下一页的时候我们需要显示一下"没有更多了"的友好提示,但是在ionic里面遇到了一个问题.就是没有数据的时候我显示了没有更多的时候我的点击商品详情的事件失效了.怎么点都不触发 这到底怎么回事.简直是....遇到了各种奇葩问题.好了先不吐槽了.还是先解决问题吧. 我们看代码的时候很容易从因为这句话而出发.最开始的时候我是上拉第一页的时候.点击事件还有效.也就是上拉到最后一页点击事件才会失效.也就是isNext为false的时候.这时候我就会以为是ng

在iframe内页面完全加载完后,关闭父页面生成的div遮罩层

遮罩层div为iframe父页面生成,需在iframe内页面完全加载完后,关闭遮罩层 alertMsgClose() :函数为关闭遮罩层函数 此段代码在iframe页面内: <script> $(function () { window.parent.alertMsgClose();// iframe 外层页面关闭遮罩层 }); </script> 原文地址:https://www.cnblogs.com/tmdsleep/p/10984450.html

javascript 实现页面加载完再显示页面

document.onreadystatechange = function () { if (document.readyState == "complete") { document.body.style.display = "block"; } else { document.body.style.display = "none"; }; }; document.onreadystatechange  是用来监听页面加载过程中的状态! re

BitmapImage处理网络图片,例如阿里云获取的图片。异步加载到需要显示的控件上。提升速度非常明显。

想直接把网络图片赋给控件,又要下载又要缓存,速度非常慢.不流畅. 需要进行处理,异步加载会显著提升速度.方法如下: public static BitmapImage ByteArrayToBitmapImage(byte[] byteArray) { BitmapImage bmp = null; try { bmp = new BitmapImage(); bmp.BeginInit(); bmp.StreamSource = new MemoryStream(byteArray); bmp

Echarts通过Ajax实现动态数据加载

Echarts(3.x版)官网实例的数据都是静态的,实际使用中往往会要求从服务器端取数据进行动态显示,官网教程里给出的异步数据加载很粗略,下面就以官网最简单的实例为例子,详细演示如下过程:1.客户端通过ajax发送请求:2.服务器端Servlet接收请求:3.生成json数据并返回给客户端:4.客户端接收数据后显示. 1.客户端通过ajax发送请求 先绘制一个最简单的Echarts图表: (这里就直接贴上代码了,直接用的是官网教程里异步数据加载和更新里的代码) <!DOCTYPE html PU

APP中数据加载的6种方式-b

我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以轻松自在的享受等待,对加载后的内容有明确的预期呢? 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载中的设计,所以会导致我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数

[转]6种常见的数据加载模式设计

原文链接:http://elya.cc/2014/03/31/loading/ 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载中的设计,所以会导致我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以轻松自在的享受等待,对加载后的

[Aaronyang] 写给自己的WPF4.5 笔记6[三巴掌-大数据加载与WPF4.5 验证体系详解 2/3]

我要做回自己--Aaronyang的博客(www.ayjs.net) 博客摘要: Virtualizing虚拟化DEMO 和 大数据加载的思路及相关知识 WPF数据提供者的使用ObjectDataProvider 和 XmlDataProvider WPF验证 第一:使用自带的属性SET抛出异常,前台捕捉到异常,描红 第二:我们可以自定义验证规则,替代刚开始的异常捕捉验证 第三:我们可以使用INotifyDataErrorInfo方式,增加异常,并实现了验证通知和还原非法值 第四:我们使用了Er

iOS APP中数据加载的6种方式

我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以轻松自在的享受等待,对加载后的内容有明确的预期呢? 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载中的设计,所以会导致我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数