Image Up装载机,角度5

时间:2019-01-10 14:17:31

标签: angular typescript

我想要一个角度为5的图像上传器,但是我找不到最好的一个,最后我找到了它,但是它是在JS中,我想在打字稿中使用它。

HTML ............

<div class="avatar-upload">
    <div class="avatar-edit">
        <input type='file' id="imageUpload" accept=".png, .jpg, .jpeg" />
        <label for="imageUpload"></label>
    </div>
    <div class="avatar-preview">
        <div id="imagePreview" style="background-image: 
       url(http://i.pravatar.cc/500?img=7);">
        </div>
    </div>
</div>

css ...........

body {
  background: whitesmoke;
  font-family: 'Open Sans', sans-serif;
}

.container {
    max-width: 960px;
    margin: 30px auto;
    padding: 20px;
}

h1 {
    font-size: 20px;
    text-align: center;
    margin: 20px 0 20px;
    small {
    display: block;
    font-size: 15px;
    padding-top: 8px;
    color: gray;
}   

.avatar-upload {
 position: relative;
 max-width: 205px;
 margin: 50px auto;

.avatar-edit {
    position: absolute;
    right: 12px;
    z-index: 1;
    top: 10px;

    input {
        display: none;

        + label {
            display: inline-block;
            width: 34px;
            height: 34px;
            margin-bottom: 0;
            border-radius: 100%;
            background: #FFFFFF;
            border: 1px solid transparent;
            box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.12);
            cursor: pointer;
            font-weight: normal;
            transition: all .2s ease-in-out;

            &:hover {
                background: #f1f1f1;
                border-color: #d6d6d6;
            }

            &:after {
                content: "\f040";
                font-family: 'FontAwesome';
                color: #757575;
                position: absolute;
                top: 10px;
                left: 0;
                right: 0;
                text-align: center;
                margin: auto;
            }
        }
    }
}
.avatar-preview {
    width: 192px;
    height: 192px;
    position: relative;
    border-radius: 100%;
    border: 6px solid #F8F8F8;
    box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.1);

    > div {
        width: 100%;
        height: 100%;
        border-radius: 100%;
        background-size: cover;
        background-repeat: no-repeat;
        background-position: center;
    }
}
}

JS ................

function readURL(input) {
 if (input.files && input.files[0]) {
    var reader = new FileReader();
    reader.onload = function(e) {
        $('#imagePreview').css('background-image',      'url('+e.target.result +')');
        $('#imagePreview').hide();
        $('#imagePreview').fadeIn(650);
    }
    reader.readAsDataURL(input.files[0]);
 }
}

$("#imageUpload").change(function() {
    readURL(this);
});

如何在角度6中使用它?

Here是我获得此链接的链接,请帮助我。

2 个答案:

答案 0 :(得分:1)

对于打字稿来说就是这样。

<input type="file" id="upload-photo" style="display: none" (change)="onSelectFile($event)" />

    onSelectFile(event: any) {
        if (event.target.files && event.target.files[0]) {
            const reader = new FileReader()

            reader.onload = (ev: any) => {
                this.person.photo = ev.target.result
            }
            reader.readAsDataURL(event.target.files[0])

        }
    }

要仅在HTML中显示,请为此编写两种方式的数据绑定。

或者您可以在此处看到此链接

https://stackblitz.com/edit/angular-twk2pn?file=src%2Fapp%2Fapp.component.ts

答案 1 :(得分:-3)

根据示例,您仅使用JQuery来操作DOM。仅使用本机Javascript和Angular处理DOM有很多选择。在我的解决方案中,我使用角度动画模块来控制淡入和淡出。

如果确实需要使用JQuery库,则可以按如下所示在组件中导入JQuery。


    import * as $ from "jquery";

    ...
       fileChangeEvent(input: any) {
          ...
          $(input.target).hide();
          $(input.target).fade(650);
       }

基于使用Angular的样本的解决方案。希望这会有所帮助。 https://stackblitz.com/edit/angular-twk2pn