角度5“装饰器不支持函数表达式”

时间:2018-06-14 08:53:25

标签: angular typescript angular-transitions

我很难用我的角色项目编译 ng build --prod

问题来自组件IndexComponent:

index.componenent.ts

import { Component, OnInit } from '@angular/core';
import { indexTransition } from './index.animations';

@Component({
  selector: 'app-index',
  templateUrl: './index.component.html',
  styleUrls: ['./index.component.scss'],
  animations: [ indexTransition ],
  host: {
    '[@indexTransition]': ''
  }
})

export class IndexComponent implements OnInit {
  constructor() {
  }

  ngOnInit() {
  }
}

如您所见,它调用index.animations(在同一文件夹中)

index.animations.ts

import { sequence, trigger, stagger, animate, style, group, query as q, transition, keyframes, animateChild } from '@angular/animations';
const query = (s,a,o={optional:true})=>q(s,a,o);

export const indexTransition = trigger('indexTransition', [
  transition(':enter', [
    query('.iw-path', [
      style({'stroke': '#000'}) 
    ], { optional: true }),
    group([
      query('.iw-path--w', [
        style({'stroke-dashoffset': '100'}),
        animate('3.5s cubic-bezier(.1,.15,.18,1)', style({'stroke-dashoffset': '0'})),
      ], { optional: true }),
      query('.iw-path--basic', [
        style({'stroke-dashoffset': '50'}),
        animate('3.5s cubic-bezier(.1,.15,.18,1)', style({'stroke-dashoffset': '0'})),
      ], { optional: true }),
      query('.iw-path', [
          style({'stroke': '#000'}),
          animate('.5s 2s', style({'stroke': '#e01f1f'})),
      ], { optional: true })
    ]),
  ]),
  transition(':leave', [
    group([
      query('.iw-path--w', [
        style({'stroke-dashoffset': '0'}),
        animate('.5s cubic-bezier(.1,.15,.18,1)', style({'stroke-dashoffset': '100'})),
      ], { optional: true }),
      query('.iw-path--basic', [
        style({'stroke-dashoffset': '0'}),
        animate('.5s cubic-bezier(.1,.15,.18,1)', style({'stroke-dashoffset': '50'})),
      ], { optional: true })
    ]),
  ])
]);

当我使用ng服务进行测试时,这很有效,但是在使用“build --prod”进行复制时出现以下错误

app \ index \ index.component.ts中的错误(8,17):模板编译'IndexComponent'时出错   'indexTransition'中的装饰器不支持函数表达式     'indexTransition'引用'ɵ0'       'ɵ0'包含app \ index \ index.animations.ts(2,15)中的错误         考虑将函数表达式更改为导出函数。

我的环境

Angular CLI:1.7.4

节点:8.10.0

操作系统:win32 x64

Angular:5.2.11

错误与this topic非常相似,但是加入的答案对我不起作用(因为你可以看到我试图在我的所有查询中添加可选的:true)。 我的问题是:在这种情况下,我应该如何“将函数表达式更改为导出的函数”?或者有更简单的方法来绕过这个错误?抱歉,我对Angular很新。

感谢您的帮助和对不良英语的抱歉,如果我的问题中缺少某些内容,请告诉我。

1 个答案:

答案 0 :(得分:0)

不完全确定,但不会这样做吗?

在index.componenent.ts

@objc func getIndex(_ sender: UIGestureRecognizer) {
    let allViewsAtGestureLocation = mySubViews.filter { $0.bounds.contains(sender.location(in: $0)) }
    let firstHitView = mySubViews.first(where: { $0.bounds.contains(sender.location(in: $0)) })
}

在index.animations.ts

    animations: [
    Animations.indexTransition
    ]