angular - Konvertera sträng till objekt i typescript?


Jag försöker validera ett glob-uttryck med Is-Valid-Glob som accepterar sträng och array. Värdet som behöver valideras tas emot från ett textfält. Problemet är att om vi skickar ett ogiltigt glob-uttryck så ger det fel resultat eftersom alla inmatningar tas emot som sträng. Till exempel: Om användaren skriver [] (ogiltigt glob) tilldelas det modellvariabeln som strängen '[]' och valideringen görs på '[]' istället för []-värdet. Finns det ett sätt att konvertera värdet från en strängvariabel till en objektvariabel (endast värdet, inte typen) och utföra validering?

PS: Jag använder Angular 2.

Svar #1

Du kan använda JSON.parse för att konvertera från sträng till objekt:

     var x = require('is-valid-glob');
     var y = '[]';//'foo/*.js' any user provided string
     // this will check if the user has provided an array object if so it 
     //will do a json.parse to remove the '' and then verify the string for a glob.
     x(y[1] !== '['?y:JSON.parse(y));

Svar #2

Prova med eval det används för att konvertera strängar till motsvarande objekt, till exempel,

var a="[]";
console.log(a);// this will print "[]" as a string.
console.log(eval(a));// this will print an array object. With 0 length array object.

Relaterade artiklar