これを聞いたのは初めてではないことを知っています。タイトルで述べたように、文字列値booleanを変換しようとしています。
以前にいくつかの値をローカルストレージに格納しました。今、すべての値を取得し、すべてをブール変数に割り当てたいと思います。
app.component.ts
localStorage.setItem('CheckOutPageReload', this.btnLoginNumOne + ',' + this.btnLoginEdit);
here this.btnLoginNumOne
およびthis.btnLoginEdit
は文字列値( "true、false")です。
mirror.component.ts
if (localStorage.getItem('CheckOutPageReload')) {
let stringToSplit = localStorage.getItem('CheckOutPageReload');
this.pageLoadParams = stringToSplit.split(',');
this.btnLoginNumOne = this.pageLoadParams[0]; //here I got the error as boolean value is not assignable to string
this.btnLoginEdit = this.pageLoadParams[1]; //here I got the error as boolean value is not assignable to string
}
このコンポーネントでは、this.btnLoginNumOn
eとthis.btnLoginEdi
tはブール値です。
Stackoverflowでソリューションを試しましたが、何も機能しません。
誰でも私がこれを修正するのを助けることができます。
方法1:
var stringValue = "true";
var boolValue = (/true/i).test(stringValue) //returns true
方法2:
var stringValue = "true";
var boolValue = (stringValue =="true"); //returns true
方法3:
var stringValue = "true";
var boolValue = JSON.parse(stringValue); //returns true
方法4:
var stringValue = "true";
var boolValue = stringValue.toLowerCase() == 'true' ? true : false; //returns true
方法5:
var stringValue = "true";
var boolValue = getBoolean(stringValue); //returns true
function getBoolean(value){
switch(value){
case true:
case "true":
case 1:
case "1":
case "on":
case "yes":
return true;
default:
return false;
}
}
ソース: http://codippa.com/how-to-convert-string-to-boolean-javascript/
私はJSON.parse(value)
で異なる値を試してきましたが、それは仕事をしているようです:
// true
Boolean(JSON.parse("true"));
Boolean(JSON.parse("1"));
Boolean(JSON.parse(1));
Boolean(JSON.parse(true));
// false
Boolean(JSON.parse("0"));
Boolean(JSON.parse(0));
Boolean(JSON.parse("false"));
Boolean(JSON.parse(false));
あなたのシナリオでは、文字列をブール値に変換することはsomeString === 'true'
のようなものを介して行うことができます(すでに答えたように)。
ただし、主な問題であるローカルストレージの処理に対処してみましょう。
ローカルストレージは、値として文字列のみをサポートします。したがって、データをストレージに保存する前に常にデータを文字列としてシリアル化し、取得するときにプロセスを逆にするのが良い方法です。
JavaScriptでの処理は非常に簡単なので、データをシリアル化するための適切なフォーマットはJSONです。
したがって、データをJSONにシリアル化できる場合、次の関数を使用してローカルストレージと対話できます。
function setItemInStorage(key, item) {
localStorage.setItem(key, JSON.stringify(item));
}
function getItemFromStorage(key) {
return JSON.parse(localStorage.getItem(key));
}
次に、例を次のように書き換えます。
setItemInStorage('CheckOutPageReload', [this.btnLoginNumOne, this.btnLoginEdit]);
そして:
if (getItemFromStorage('CheckOutPageReload')) {
const pageLoadParams = getItemFromStorage('CheckOutPageReload');
this.btnLoginNumOne = pageLoadParams[0];
this.btnLoginEdit = pageLoadParams[1];
}
拡張機能の定義:String + Extension.ts
interface String {
toBoolean(): boolean
}
String.prototype.toBoolean = function (): boolean {
switch (this) {
case 'true':
case '1':
case 'on':
case 'yes':
return true
default:
return false
}
}
そして、使用したいファイルにインポートします '@/path/to/String + Extension'